2012-03-06 96 views
0

我知道这里有一些例子,但是我不能让它与我的脚本一起工作。我意识到你需要制造一个界限,但它不想工作。居中多个标记Google API v3

这里是我的代码:

<script type="text/javascript"> 
    var infowindow; 
    var map; 

    function initialize() { 
    var myLatlng = new google.maps.LatLng(37.4419, -122.1419); 
    var myOptions = { 
     zoom: 13, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    downloadUrl("include/moredata.xml", function(data) { 
     var markers = data.documentElement.getElementsByTagName("marker"); 
     for (var i = 0; i < markers.length; i++) { 
     var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")), 
            parseFloat(markers[i].getAttribute("lng"))); 
     var marker = createMarker(markers[i].getAttribute("name"), latlng); 
     } 
    }); 
    } 

    function createMarker(name, latlng) { 
    var marker = new google.maps.Marker({position: latlng, map: map}); 
    google.maps.event.addListener(marker, "click", function() { 
     if (infowindow) infowindow.close(); 
     infowindow = new google.maps.InfoWindow({content: name}); 
     infowindow.open(map, marker); 
    }); 
    return marker; 
    } 

    function AutoCenter() { 
    // Create a new viewpoint bound 
    var bounds = new google.maps.LatLngBounds(); 
    // Go through each... 
    $.each(markers, function (index, marker) { 
    bounds.extend(marker.position); 
    }); 
    // Fit these bounds to the map 
    map.fitBounds(bounds); 
    } 

</script> 

起初我还以为是因为我宣布我的选择中心和缩放,但即使采取这些出来后,我的地图没有露面。请帮助???谢谢!

+0

是您对标记或问题所有的地图都没有显示? – 2012-03-06 06:22:42

+0

对不起,我想让地图居中放大到标记图。现在地图应该显示出来。 – 2012-03-06 06:28:46

+0

第一部分放在你的'initialize function'中,第二部分放在你的for(...){'循环中,在你定义了标记之后,第三部分放在你的'$ .each'循环中替换'bounds .extend(marker.position)'。如果你有真正的问题,我可以在一个非常简洁的版本中发布代码,如果你可以给我一个XML的视图。 – martin 2012-03-07 05:22:02

回答

0

首先建立一个数组:

var realMarkers = []; 

然后推标记入阵:

var marker = createMarker(markers[i].getAttribute("name"), latlng); 
realMarkers.push(marker); 

然后当你循环realMarkers:

bounds.extend(marker.getPosition()); 
+0

对不起马丁,我仍然对将这些代码放在哪里感到困惑。 – 2012-03-06 17:02:39

相关问题