【发布时间】: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