【问题标题】:Set Zoom and Center to show all markers - shows blue color in map element设置缩放和中心以显示所有标记 - 在地图元素中显示蓝色
【发布时间】:2012-09-01 10:00:51
【问题描述】:

我正在尝试使地图居中并适合最佳缩放级别以使用此代码显示所有标记

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); 

地图现在显示为蓝色,直到我将鼠标悬停在某个地址上。这是因为变焦太远还是其他原因?

【问题讨论】:

  • 你在 mapOptions 中使用 center: latlng,这意味着 latlng 是一个 google.maps.LatLng 对象,但后来你像 for (var i = 0; i
  • 这是一个不同的问题。 StackOverflow 是针对特定 编程问题的,而不是聊天网站。 latlng 被定义为 latlng = new google.maps.LatLng(lat,longitude); 所以它不是一个数组。
  • 我是否应该获取每个标记的 LatLng 并将它们放入一个数组中,并将它们设置为地图的边界以便正确缩放和居中?
  • 是的,并且还使用那些 latlng 来扩展 LatLngBounds 对象。

标签: google-maps


【解决方案1】:

您的地图将指向太平洋中部,因此它是蓝色的。那是因为您没有正确阅读标记的纬度。而不是

  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());
}

【讨论】:

  • 使用您建议的代码显示相同的结果,没有变化。检查给定 url 上的 calculateCenter() 函数。
  • 抱歉,您的代码非常杂乱且难以阅读,但我可以看到您在其中做了一些奇怪的事情。例如,您的
猜你喜欢
  • 1970-01-01
  • 2013-01-27
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-28
相关资源
最近更新 更多