Openlayers 3 - разные стили / маркеры для каждой точки на объекте MultiPoint

У меня есть функция MultiPoint со следующим Geo JSON.

{
    "type": "Feature",
    "geometry": {
        "type": "MultiPoint",
        "coordinates": [
            [
                -123,
                58
            ],
            [
                -152.32,
                17.5
            ],
            [
                52.02,
                42.64
            ]
        ]
    }
}

Когда я рисую это на карте и применяю любой значок через функцию стиля, он применяется ко всем точкам. Но я хотел бы показать все 3 координаты выше с различными значками на карте. Можно ли как-нибудь добавить разные маркеры для каждой координаты в многоточечном объекте?

1 ответ

Чтобы применить разные стили для разных координат в MultiPoint, нужно написать разные стили для каждой координаты. Я создал вид в плункер. Пройдите код по этой ссылке

new ol.style.Style({
    image: new ol.style.Circle({
      radius: 5,
      fill: new ol.style.Fill({
        color: 'orange'
      })
    }),
    geometry: function(feature) {
      var coordinates = feature.getGeometry().getCoordinates();
      return new ol.geom.Point(coordinates[0]);
    }
  })

В функции геометрии рассмотрите единственную координату и примените стиль для нее.

Примечание. Если в MultiPoint больше точек, код будет раздутым.

Другие вопросы по тегам