0

В настоящее время я работаю над OpenLayers 3.Пользовательские наложений в OpenLayers 3

Я использовал пользовательские наложений в Google Maps JavaScript API v3 добавлять собственные маркеры в HTML DIV на карте. И эти маркеры сгруппированы и построены в разных пользовательских оверлеях.

Теперь я пытаюсь реализовать то же самое в OpenLayers 3, но не смог найти решение, поскольку наложения в OpenLayers 3 берут один маркер в одном наложении.

Могу ли я группировать оверлеи в OpenLayers 3 для группировки маркеров? Или есть ли другие варианты?

+0

Я тоже сталкиваюсь с той же проблемой. Вы также можете попробовать leaflet.js –

+0

Но мне нужно решение в OpenLayers 3. – SHK

ответ

0

У вас есть несколько возможных вариантов.

A) Если у вас есть только один набор данных, то вы можете использовать StyleFunction. Смотрите эту ol3 vector example, более конкретно этот раздел кода:

var vectorLayer = new ol.layer.Vector({ 
    source: new ol.source.Vector({ 
     url: 'https://openlayers.org/en/v3.20.1/examples/data/geojson/countries.geojson', 
     format: new ol.format.GeoJSON() 
    }), 
    style: function(feature, resolution) { 
     style.getText().setText(resolution < 5000 ? feature.get('name') : ''); 
     return style; 
    } 
    }); 

Посмотреть на style недвижимость? Это может быть ol.style.Style или функция стиля, как показано выше. Функция получает функцию и текущее разрешение вида карты в качестве аргумента и вызывается каждый раз, когда функция получает визуализацию (или повторно отображается). Возврат ol.style.Style или массив объектов стиля будут отображать эту функцию с помощью/the styles.

Эта функция может иметь уникальные свойства, то есть feature.getProperties(). Используя столько свойств внутри функции, вы можете вернуть уникальный массив уникальных объектов стиля.

Вот еще complex ol3 example featuring style functions, который вы можете посмотреть и иметь пример динамического стиля в зависимости от разрешения. Это может дать вам лучшее представление о том, что вы можете сделать с характеристиками.

B) Если у вас есть несколько наборов данных, то вы можете создать один векторный слой каждого набора данных и определить уникальный объект стиля на слое, который вывело бы имеет все то же самое.

+0

Спасибо за ваш ответ, но мне нужно использовать html div для каждого маркера для хранения информации о маркере. Я не знаю, как стилистика наложений может помочь в этом. – SHK

+0

Если вы посмотрите на векторный пример ol3 (то же самое в ответе), вы увидите, что когда вы наводите курсор мыши на страны, вы видите отображаемую информацию. Они отображаются с использованием ol.Feature, а не ol.Overlay. Я думаю, это может быть хорошим подходом для вас. –