【问题标题】:Unable to reuse polyOptions for new polygon无法为新多边形重用 polyOptions
【发布时间】:2014-09-18 15:25:31
【问题描述】:

我正在使用 Google Maps v3 API,在地图上放置一些多边形。我创建了一个在创建多边形时使用的“polyOptions”对象。

这只能工作一次。对于所有其他多边形,我必须创建另一个相同的“polyOptions”对象。这很好,但有点重复,而且这个网页已经足够大了,不用重复我自己。

我是不是误解了这个 JS 对象的本质?

//Create array for polygons 

var polygons = [];

//first polygon

var myCoordinates = [new google.maps.LatLng(55.81362907119961, -2.054443359375) //long list of coordinates
var polyOptions = {
    path: myCoordinates,
    strokeWeight: 1,
    fillColor: "white",
    fillOpacity: 0.6
}
var poly1= new google.maps.Polygon(polyOptions);
poly1.setMap(map);
polygons.push(poly1);

//second polygon

var myCoordinates = [new google.maps.LatLng(54.94607621987403, -3.16131591796875) // long list of coordinates
var poly2 = new google.maps.Polygon(polyOptions); // doesn't work
poly2.setMap(map);
polygons.push(poly2);

【问题讨论】:

  • 您正在为变量myCoordinates 分配一个新值。为什么您认为它会对polyOptions.path 属性的值产生任何影响?
  • 显然,如果我意识到这一点,我就不需要问这个问题了!

标签: javascript object google-maps-api-3 scope


【解决方案1】:

您必须在每一步更新您的 polyOptions 的 path 属性。目前,您的第二个多边形以相同的坐标绘制在第一个多边形上。

// second polygon

// your var myCoordinates is already defined above, now use it by its name
myCoordinates = [new google.maps.LatLng(54.94607621987403, -3.16131591796875) // long list of coordinates
polyOptions.path = myCoordinates; // here you set path to the new value
var poly2 = new google.maps.Polygon(polyOptions); // should work
poly2.setMap(map);
polygons.push(poly2);

【讨论】:

  • 确实有效。事后看来是一个明显的错误!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多