所以我尝试在地图上绘制网格线,我在这里找到了一个关于google api文档的好例子:https://developers.google.com/maps/documentation/javascript/examples/maptype-base
它有效,现在我在网格线构建的每个区域或矩形中都有另一个问题,我希望它们在点击事件上有一个监听器,然后缩放到已被点击的区域。我试过这样的
google.maps.event.addListener(map, "click", function (e) {
var latLng = e.latLng;
map.setCenter(new google.maps.LatLng(latLng.lat(), latLng.lng()));
map.setZoom(17);
});
它也可以工作,但是你可以看到纬度和经度是光标/指针点击的确切位置,它不在矩形或区域的中间,这意味着放大后的地图是错误的。有人可以帮我这个吗?
答案 0 :(得分:0)
我认为问题是因为您正在使用叠加层(作为网格线),在使用贴图叠加层时,Google Maps API会将每个缩放级别的图像分解为一组排列在网格中的方形贴图。当地图移动到新位置或新缩放级别时,Maps API会确定需要哪些切片,并将该信息转换为要检索的一组切片。
例如,每个缩放级别将放大倍数增加两倍。因此,在缩放级别1,地图将呈现为2x2网格。在缩放级别2,它是一个4x4网格。在缩放级别3,它是一个8x8网格,依此类推。
因此,当您放大时,您单击的坐标并不总是在中间,因为您的坐标未设置图块叠加。 有关叠加的详细信息,请查看此page。
您还可以查看此SO question以获取更多信息。