Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Как на яндекс карте показать районы города?

#javascript #веб_программирование #yandex_maps_api #яндекс #карты


Есть задача показать административные районы города на яндекс картах. 
При этом каждый район должен иметь свой цвет и прозрачность.
Например, здесь отображается один район города:
на Яндекс Карте

Нужно показать все( или несколько) районы(ов) города и иметь возможность задать им
цвет и прозрачность через API.
Подскажите, как это можно сделать?

UPD1. Есть идея сделать районы в виде полигонов. Тогда можно будет править их как
угодно. Но нужны координаты границ районов. Карта яндекса откуда же берет эти данные.
Вот как их получить?  

UPD2. Получен официальный ответ от тех поддержки Яндекс Карт.
"Средствами АПИ Яндекс карт сделать это нельзя". Так что испольуем OSM.
    


Ответы

Ответ 1



Общий план действий такой: ymaps.ready(function() { // 0. Создаем карту, например так: var map, regionName = "Краснодар, Западный округ", center = [38.943216, 45.033266], zoom = 11; map = new ymaps.Map('yamap', { center: center, zoom: zoom, controls: [] }); // 1. Запрашиваем через геокодер район (у Яндекса этой возможности пока нет, придется пользоваться OSM) var url = "http://nominatim.openstreetmap.org/search"; $.getJSON(url, {q: regionName, format: "json", polygon_geojson: 1}) .then(function (data) { $.each(data, function(ix, place) { if ("relation" == place.osm_type) { // 2. Создаем полигон с нужными координатами var p = new ymaps.Polygon(place.geojson.coordinates); // 3. Добавляем полигон на карту map.geoObjects.add(p); } }); }, function (err) { console.log(err); }); }); Этап 1, в качестве примера, приведен с использованием jQuery. Этап 2 скрывает небольшую проблему. OSM возвращает координаты в порядке (долгота, широта), Яндекс работает по-умолчанию с порядком (широта, долгота). Чтобы это поменять нужно указать порядок при подключении API Также на этапе 2 можно добавить "по вкусу" цвет фона, обводку, прозрачность и многое другое см. Polygon

Комментариев нет:

Отправить комментарий