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