Mit*_*all 1 javascript google-maps google-maps-api-3
我有一个页面,我可以打开/关闭标记类别.一个标记("属性")将始终可见.我想放大尽可能接近显示所有可见标记.
所以,如果我有3个标记靠近在一起,我想尽可能放大所有近距离,同时仍然适合3个标记.
var fullBounds = new google.maps.LatLngBounds();
var map;
var infowindow;
var markers = {};
var nearbyPlaces = {{#property}}{{{stringify nearbyPlaces}}}{{/property}};
var property = new google.maps.LatLng({{#property}}{{address.geo.lat}},{{address.geo.lng}}{{/property}});
var name = {{#property}}{{{stringify name}}}{{/property}}
var prop = {{#property}}{{{stringify address}}}{{/property}};
function initialize() {
    map = new google.maps.Map(document.getElementById('map-canvas'), {
        center: property,
        zoom: 15
    });
    var marker = new google.maps.Marker({
        map: map,
        icon: '../../../../img/map/property.png', // Set Property to a green marker
        position: property
    });
    infowindow = new google.maps.InfoWindow();
    // Set infowindow for the property
    google.maps.event.addListener(marker, 'click', function () {
        infowindow.setContent(name + '<br/>' + prop.street + '<br/>' + prop.city + ', ' + prop.state.name);
        infowindow.open(map, this);
    });
    var l = nearbyPlaces.length;
    while (l--) {
        markers[nearbyPlaces[l].category] = [];
        createCategory(nearbyPlaces[l]);
    }
    console.log(map.getZoom());
}
function createCategory(item) {
    var l = item.places.length;
    while (l--) {
        var marker = createMarker(item.places[l]);
        markers[item.category].push(marker);
        console.log(item.category);
        switch(item.category){
            case 'Public Schools':
                marker.icon = '../../../../img/map/public_school.png';
                break;
            case 'Colleges':
                marker.icon = '../../../../img/map/college.png';
                break;
            case 'Preferred Employers':
                marker.icon = '../../../../img/map/work.png';
                break;
            default:
                marker.icon = '../../../../img/map/star.png'
        }
    }
}
function toggleCategory(name, el) {
    //map.fitBounds(fullBounds);
    var button = $(el);
    var visible = true;
    if (button.hasClass('active')) {
        visible = false;
    }
    button.toggleClass('active');
    var category = markers[name];
    for (var x = 0; x < category.length; x++){
        var lat = category[x].position.k;
        var lng = category[x].position.B;
        var point = new google.maps.LatLng(lat,lng);
        fullBounds.extend(point);
    }
    var l = category.length;
    console.log('cagegory length: ' + category.length);
    while (l--) {
        category[l].setVisible(visible);
    }
    showVisible();
}
function createMarker(place) {
//var lat = parseFloat(place.address.geo.lat);
//var lng = parseFloat(place.address.geo.lng);
//var point = new google.maps.LatLng(lat,lng);
//fullBounds.extend(point);
//console.log(place);
    var marker = new google.maps.Marker({
        map: map,
        title: place.title,
        icon: 'http://maps.google.com/mapfiles/ms/micons/red-dot.png',  // Set all other markers to red...
        position: new google.maps.LatLng(place.address.geo.lat, place.address.geo.lng)
    });
    google.maps.event.addListener(marker, 'click', function () {
        infowindow.setContent(place.title + '<br/>' + place.address.street + '<br/>' + place.address.city + ', ' + place.address.state.name);
        infowindow.open(map, this);
    });
    return marker;
}
function showVisible() {
    // FIT ONLY VISIBLE MARKERS
}
google.maps.event.addDomListener(window, 'load', initialize);
我所做的是在创建Map实例之后,在创建任何Marker实例之前创建一个LatLngBounds实例.然后在创建标记时,我为每个创建的Marker调用LatLngBounds实例的extend方法:
myLatLngBounds.extend( myMarker.getPosition() );
在完成所有标记之后,我在我的地图实例上调用fitBounds,并将其传递给LatLngBounds:
myMap.fitBounds( myLatLngBounds );
| 归档时间: | 
 | 
| 查看次数: | 4190 次 | 
| 最近记录: |