2009-05-28 20 views
0

我想将地图显示区域分成许多相等的部分。例如:水平10个部分和垂直15个部分,导致150个相等的部分。我该如何将Google地图显示分成相同数量的部分?

我不知道,如果谷歌地图支持这样的事情......

map.getBounds()回报总可视面积; 所以,

var bounds = map.getBounds(); 
alert("main: "+bounds.isEmpty()); 
    var southWest = bounds.getSouthWest(); 
    var northEast = bounds.getNorthEast(); 
    var tileWidth = (northEast.lng() - southWest.lng())/10; 
    var tileHeight = (northEast.lat() - southWest.lat())/2; 

    for (var x=0; x < 10 ; x++) 
{ 
    for (var y=0; y < 2 ; y++) 
    { 
    var northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
    var westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
    var southLat = northLat + tileHeight; 
    var eastLng = westLng + tileHeight; 

      var tileBounds = new GLatLngBounds(new GLatLng(southLat, westLng), new GLatLng(northLat, eastLng)); 
    alert(tileBounds.isEmpty()); 

    } 
} 

现在的问题是tileBounds.isEmpty()返回TRUE !!

我无法找到我失去的东西!任何帮助!

+0

不知道为什么你的getBounds()调用返回一个空的GLatLngBounds对象。尝试一些地图对象上的其他“指标”调用(如getSize(),getCenter等)。你在什么时候调用这段代码,地图页面是否完成加载?也许包括一个链接到你的例子? – RedBlueThing 2009-05-29 03:24:52

+0

问题解决了,我对x1,y1和x2,y2做了错误的GLatLngBounds承建商的协调。非常感谢。 – Posto 2009-05-29 05:12:49

回答

1

我假设你在150个较小瓷砖的区域坐标之后?

map.getBounds()返回一个GLatLngBounds对象。这包括getSouthWest()和getNorthEast()方法。所以,从底部的纬度/经度值左,可见地图的右上角的角落,你可以导出组150个小区域的坐标:

  • 鸿沟的宽度(getNorthEast()的经度 - 经度getSouthWest())减去15,确定瓷砖宽度。
  • 将getNorthEast()的纬度 - getSouthWest()的纬度)除以10,以确定瓷砖高度。
  • 根据x和y的偏移量乘以宽度和高度来计算特定单元格的坐标。

所以实例化一个GLatLngBounds(SW:?的GLatLng,NE?的GLatLng)为特定的细胞指数(X,Y):

// bounds is the map.getBounds() result 
northLat = bounds.getNorthEast().lat() + (tileHeight * y); 
westLng = bounds.getSouthWest().lng() + (tileWidth * x); 
southLat = northLat + tileHeight; 
eastLng = westLng + tileHeight; 

tileBounds = new GLatLngBounds (new GLatLng (southLat, westLng), new GLatLng (northLat, eastLng)); 
相关问题