我正在尝试将图标放置在Openlayers中的现有多边形中。
我正在使用多边形的范围来找到其中心:
extent.getCenter(feature.getGeometry().getExtent());
,然后将地图上的标记位置设置为该位置。
如果多边形的形状相对简单,则可以使用。但是,对于某些更高级的多边形,图标似乎位于该多边形的外部。
在这张照片中:
我已经在大“三角形”的图标和标签上标记了一个黑圈。
标签似乎知道如何位于多边形内部,但图标却不知道,这可能是因为标签位置是在Openlayers内部计算的。
通过将标签上的样式定义为Text对象来设置标签。也可以用样式定义图像,但不幸的是,图像也放置在多边形之外。
是否有任何方法可以将图标放置在标签所在的位置,或者以某种方式使其始终位于绘制的多边形内?
答案 0 :(得分:1)
您应该使用getInteriorPoint
中的ol.geom.Polygon
方法。有关详细信息,请参见API http://openlayers.org/en/latest/apidoc/module-ol_geom_Polygon-Polygon.html#getInteriorPoint`
您还可以看到a demo使用“月亮”形状的多边形来说明“它的工作原理”。通常,质心应该在这种形状的外部,而使用该函数,返回的点在内部。