【问题标题】:Google map polygon with outside map tinted [duplicate]带有外部地图着色的谷歌地图多边形[重复]
【发布时间】:2015-07-30 08:17:40
【问题描述】:

首先,对于您将要阅读的问题,我使用了这段 sn-p 代码来突出显示我的多边形: Highlight polygon and tint rest of map using Google Maps

这是我的代码(它是 Angular):

var boundaries          = [];

// big area
var overlay             = [
  new $rootScope.googleApi.LatLng(80.0, -90.0),
  new $rootScope.googleApi.LatLng(-60.0, -90.0),
  new $rootScope.googleApi.LatLng(-60.0, 90.0),
  new $rootScope.googleApi.LatLng(80.0, 90.0)
];

// my polygon
angular.forEach(settings_boundaries, function(val, key) {
  boundaries.push(new $rootScope.googleApi.LatLng(val[1], val[0]));
});

// create a polygon with overlay first
var poly = new $rootScope.googleApi.Polygon({
  paths: [overlay, boundaries],
  strokeColor: "blue",
  strokeWeight: "1",
  fillColor: "black",
  fillOpacity: 0.4,
  clickable: false
});

poly.setMap(interactiveMap);

现在,真正的问题是, 如果我使用这些坐标(我不记得我最初是如何得到它们的):

[[1.6101837158203125,49.00274483644452],
[1.6294097900390625,49.01175312475694],
[1.5947341918945312,48.98787759766659],
[1.6101837158203125,49.00274483644452]]

一切正常(如您所见here)。

但如果我使用这些:

[[1.6809940338134766,48.98337149775796],
[1.6791915893554688,48.96849847697763],
[1.7185020446777344,48.995199140974066],
[1.6809940338134766,48.98337149775796]]

这不再起作用了。
如您所见here

我用这个网站生成坐标:
http://www.the-di-lab.com/polygon/(查看screenshot

我搜索了很长时间可能是什么问题,但我真的不知道。坐标大致相同。第一个 lat,lon 值与最后一个相同。

如果您有任何想法(我猜坐标中有一些特别的东西),我想知道!

谢谢!

【问题讨论】:

    标签: javascript angularjs google-maps google-maps-api-3


    【解决方案1】:

    在结构上,三角形的坐标是正确的。仅几何差异第一个三角形(起作用的那个)是按顺时针方向绘制的,而后者是逆时针方向绘制的。我已经遇到过这样的情况,但我不记得是哪个网站。然后尝试用这种方式反转三角形的绘制方向:

         [[1.6809940338134766,48.98337149775796],
         [1.7185020446777344,48.995199140974066]
         [1.6791915893554688,48.96849847697763]
         [1.6809940338134766,48.98337149775796]]
    

    【讨论】:

    • 考虑到我尝试解决问题所花费的时间,我不知道我是如何没有找到具有相同问题(并且已经有相同答案)的 stackoverflow 主题......无论如何,谢谢,现在可以使用了!
    • 我不知道那个答案,我提到的网站不是这样。我的 cmets 来源于一个几何推理多边形内部到区域
    • 不适用于:var world = [ new google.maps.LatLng(90, 90), new google.maps.LatLng(90, -90), new google.maps.LatLng(0, 90), new google.maps.LatLng(0, -90), new google.maps.LatLng(90, 90) ];
    • @sbrm1 无法理解您的需求,请尝试发布一个适当的新问题 .. 详细描述情况、代码和数据示例 .. 最终评论我这个新问题的链接 ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多