Я использую библиотеку OpenLayers для отображения некоторых точек на карте. Я хочу показать только 10-километровую зону от центральной точки. Может ли кто-нибудь помочь мне в этом?
Вот фрагмент моего кода.
var map = new Map({
layers: [
new TileLayer({
source: new OSM()
}),
vectorLayer
],
target: 'map',
view: new View({
center: transform([19.83752162, 52.09696925], 'EPSG:4326', 'EPSG:3857'),
zoom: 12,
})
});
0
Nizar Ali Hunzai
22 Ноя 2019 в 00:56
1
Вы можете установить параметр maxResolution в представлении (необходимое значение будет зависеть от размера вашей карты)
– Mike
22 Ноя 2019 в 02:04
MaxResolution предотвращает уменьшение масштаба, но позволяет панорамировать. Если вы никогда не хотите панорамировать более чем на 10 км, вы можете установить параметр экстента в виде (только в OpenLayers 6).
– Mike
22 Ноя 2019 в 02:07
1 ответ
Для этого вам нужно выполнить некоторую предварительную обработку перед инициализацией карты.
1- Сделать элемент из координат центра.
let pointFeature = new ol.Feature(
new ol.geom.Point(transform([19.83752162, 52.09696925], 'EPSG:4326', 'EPSG:3857'))
);
2- Получить степень созданного выше объекта.
let poitnExtent = pointFeature.getGeometry().getExtent();
3- Буферизируйте экстент до желаемого радиуса.
let bufferedExtent = new ol.extent.buffer(poitnExtent, raduis goes here (In meters));
4- Используйте этот буферизованный экстент для инициализации карты.
var map = new Map({
layers: [
new TileLayer({
source: new OSM()
}),
vectorLayer
],
target: 'map',
view: new View({
center: transform([19.83752162, 52.09696925], 'EPSG:4326', 'EPSG:3857'),
extent: bufferedExtent,
zoom: 12,
})
});
2
Naseer
22 Ноя 2019 в 10:04
Вы даже можете пропустить создание объекта, так как одной геометрии достаточно, например:
– const pointExtent = new ol.geom.Point(transform([19.83752162, 52.09696925], 'EPSG:4326', 'EPSG:3857')).getExtent();
Rob
22 Ноя 2019 в 12:34
Остерегайтесь расстояний в 3857, они не надежны, особенно в северных широтах как в ОП
– JGH
22 Ноя 2019 в 16:38
Похожие вопросы
Новые вопросы
maps
Карта - это визуальное представление области - символическое изображение, подчеркивающее отношения между элементами этого пространства, такими как объекты, регионы и темы. Для структуры данных «ключ-значение» используйте тег словаря.