2012-09-01 49 views
0

我试图在地图中心,并使用此代码设置缩放和中心显示所有标记 - 显示在地图元素

var searchname=document.getElementById("hidden_searchname").value; 
if(trim(document.getElementById("longitude").value)!="") 
{ 
    zoom=11; 
    lat=document.getElementById("latitude").value; 
    longitude=document.getElementById("longitude").value; 
} 
else 
{ 
    zoom=11; 
    longitude="-88"; 
    lat="42"; 
} 
latlng = new google.maps.LatLng(lat,longitude); 
var myOptions = { 
    zoom: zoom, 
    center: latlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}; 

map = new google.maps.Map(document.getElementById("map"), myOptions); 

var latlngbounds = new google.maps.LatLngBounds(); 

for (var i = 0; i < latlng.length; i++) 
{ 
    latlngbounds.extend(latlng[i]); 
} 
//map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)); 
map.setCenter(latlngbounds.getCenter()); 
map.fitBounds(latlngbounds); 

符合最佳变焦状态来显示所有标记蓝色的颜色,但它让我没有我得到的地图和控制台错误是“type error c is null”。网址是http://tinyurl.com/bp94qdy

在框中键入Mcdonalds并参见。

我调整的代码并将其放大正确地使用以下

map = new google.maps.Map(document.getElementById("map"), myOptions); 


var latlngbounds = new google.maps.LatLngBounds(); 

    for (var index in markersArray) { 

     var lat = markersArray[index].lat; 
     var lng = markersArray[index].lng; 
    //alert(markersArray[index].lng); 
     var latlng2 = new google.maps.LatLng(lat, lng); 
     latlngbounds.extend(latlng2); 
     } 

    //map.setCenter(latlngbounds.getCenter(), map.getBoundsZoomLevel(latlngbounds)); 
    map.setCenter(latlngbounds.getCenter()); 
     map.fitBounds(latlngbounds); 

代码的地图上现在显示蓝色,直到我悬停在一个地址。这是因为变焦太远或其他什么?

+0

您使用的中心:经纬度中的MapOptions,这意味着经纬度是google.maps.LatLng物件,但后来你使用它像(VAR i = 0; i Marcelo

+0

这是一个不同的问题。 StackOverflow是*特定的*编程问题,而不是聊天网站。 latlng被定义为** latlng = new google.maps.LatLng(lat,longitude); **所以它不是数组。 – Marcelo

+0

我是否应该为每个标记获取LatLng并将它们放入数组中,并将它们设置为地图的正确缩放和居中? –

回答

0

您的地图将会到达太平洋中部,因此它是蓝色的。这是因为你没有正确读取标记的拉普隆。取而代之的

for (var index in markersArray) { 

    var lat = markersArray[index].lat; 
    var lng = markersArray[index].lng; 

    var latlng2 = new google.maps.LatLng(lat, lng); 
    latlngbounds.extend(latlng2); 
} 

你应该做的

for (var i = 0 ; i < markersArray.length ; i++) { 
    latlngbounds.extend(markersArray[i].getPosition()); 
} 
+0

使用您的建议代码显示相同的结果,无变化。检查给定url上的calculateCenter()函数。 –

+0

很抱歉,您的代码非常混乱,难以阅读,但我可以看到您正在做一些奇怪的事情。例如,通常位于文档的部分内。 – Marcelo

+1

此外,您的函数calculateCenter()只会在您拖动地图时执行,因为您是从“拖动”事件处理函数中调用它的。 – Marcelo

相关问题