所以这是我的问题,我相信很多人都会参与其中。我有一个带有状态数组的JSON文件,以及对应于该状态的lat和lng值的子数组。
我遍历状态,然后遍历点然后构建50个多边形。
我现在需要在点击状态时居中并放大状态。我意识到我可以再次循环点,并添加边界。但是,当我在控制台中显示多边形时,我可以点击数值并查看点。
我假设有一种方法可以简单地访问这些点,而无需通过它们重新循环......这些点已经与多边形相关联,该多边形与状态相关联。
当我尝试console.log(newpoly.latLngs);
时,我已退回:
Kf
->b: Array[1]
->0: Kf
->b: Array[5]
->0: Q
Xa: 41.0037
Ya: -104.05560000000003
__proto__: Q
1: Q
Xa: 44.9949
Ya: -104.0584
__proto__: Q
2: Q
Xa: 44.9998
Ya: -111.0539
__proto__: Q
3: Q
Xa: 40.9986
Ya: -111.04570000000001
__proto__: Q
4: Q
Xa: 41.0006
Ya: -104.05560000000003
抱歉,我不确定如何使这看起来更干净。
无论如何我想访问latLng点的最后一个数组。或者我应该为边界添加另一个循环?
由于
答案 0 :(得分:0)
我认为没有办法在图像映射中获取多边形的边界框(我认为这就是你正在使用的)。
无需编写另一个循环;使用你已编写的循环来计算边界并同时构建多边形。
答案 1 :(得分:0)
让它以这种方式运作:
jQuery.getJSON("http://www.betafoot.com/wp-content/themes/twentyeleven/states.json", function(json)
{
var j = [];
var i = [];
var $length = Object.keys(json).length;
for (var j=1; j<$length+1; j++)
{
var latlngbounds = new google.maps.LatLngBounds( );
var pts = [];
for (var i=0; i<json[j].points.length; i++)
{
var id = json[j].stateid;
pts[i] = new google.maps.LatLng(json[j].points[i][1], json[j].points[i][2]);
latlngbounds.extend(pts[i]);
};
var newpoly = new google.maps.Polygon({
paths: pts,
strokeColor: "#FFFFFF",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0
});
newpoly.setMap(map);
newpoly.latlngbounds = latlngbounds;
newpoly.objInfo = id;
listenMarker(newpoly);
};
});
function listenMarker(newpoly)
{
google.maps.event.addListener(newpoly, 'click', function(event)
{
map.fitBounds(newpoly.latlngbounds);
});
};
你可以看到我将latlngbounds附加到“newpoly”,然后从处理点击动作的单独函数访问它们。如果有人认为这是个坏主意,请告诉我。