【问题标题】:Drawing a polygon over the entire map在整个地图上绘制多边形
【发布时间】:2013-02-21 20:37:49
【问题描述】:

我正在使用适用于 Android 的 Google Maps V2,我需要在整个地图上绘制一个多边形,然后在选定的城镇中添加一个洞。根据某些选项,这样做的目的是突出显示地图的特定区域。

我尝试在整个地图上绘制一个多边形,其边界如下:

 Arrays.asList(new LatLng(90, -180),
   new LatLng(-90, -180),
   new LatLng(-90, 180),
   new LatLng(90, 180),
   new LatLng(90, -180));

但是多边形没有被绘制到地图中。我尝试将边界缩小到更小的区域,并且多边形看起来没有问题。

如何用多边形覆盖整个地图?

【问题讨论】:

    标签: android google-maps google-maps-android-api-2


    【解决方案1】:

    我应该与:

    float delta = 0.1f;
    
    List points = Arrays.asList(new LatLng(90, -180),
    
    new LatLng(-90+delta, -180+delta),
    
    new LatLng(-90+delta, 0),
    
    new LatLng(-90+delta, 180-delta),
    
    new LatLng(0, 180-delta),
    
    new LatLng(90-delta, 180-delta),
    
    new LatLng(90-delta, 0),
    
    new LatLng(90-delta, -180+delta),
    
    new LatLng(0,-180+delta));
    
    PolygonOptions options = new PolygonOptions();
    
    options.addAll(points);
    
    options.fillColor(R.color.red_half_alpha); // 50% opacity red, for example #80FF0000
    
    map.addPolygon(options);
    

    我希望你能看到这段代码的去向。它适用于 android v2 地图。

    我认为浮点计算存在一些问题。另一点是,如果您仔细观察俄罗斯和美国之间的关系(例如 LatLng(0,180)、LatLng(0,-180)),您很可能会看到一条非常细的线。

    这是你的多边形。

    PS:如果您在地图上看到漏洞,请提前提醒一下,它是如何为您服务的。我想很多人都有同样的问题。

    【讨论】:

      【解决方案2】:

      试试这个

               new PolygonOptions()
              .add(new LatLng(85,90), new LatLng(85,0.1),
                   new LatLng(85,-90), new LatLng(85,-179.9),
                   new LatLng(0,-179.9), new LatLng(-85,-179.9),
                   new LatLng(-85,-90), new LatLng(-85,0.1),
                   new LatLng(-85,90), new LatLng(-85,179.9),
                   new LatLng(0,179.9), new LatLng(85,179.9))
      

      【讨论】:

        【解决方案3】:

        阅读PolygonOptions,我想你应该可以做到:

        List points = Arrays.asList(new LatLng(90, -180),
           new LatLng(-90, -180),
           new LatLng(-90, 180),
           new LatLng(90, 180),
           new LatLng(90, 180));
        PolygonOptions options = new PolygonOptions();
        options.addAll(points)
        options.fillColor(#80FF0000); // 50% opacity red, for example
        map.addPolygon(options);
        

        如果您没有指定填充颜色,则必须指定。 如果你这样做了,对不起,但我猜不出你没有发布的代码:)

        【讨论】:

        • 我确实指定了填充颜色,这正是我尝试过的代码,即使是用笔划来查看发生了什么。它不会用多边形填充地图,而是画一条线:imgur.com/0YqRb37。这条线在澳大利亚附近延伸并结束:)
        • 也许这是关于地图 API v2 多边形的一些奇怪行为。如果没有线条穿过屏幕,则可能不会渲染。如果您的目标是使地图变黑,则可以尝试使用 TileOverlay :)
        • 这只是画了一条细线。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多