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