Могу ли я показать одну страну (замаскированную) в GoogleMaps?
Можно ли замаскировать соседние страны в GoogleMap? В моем случае я просто хочу показать Швецию с одной точки зрения. На второй взгляд просто Норвегия, Дания и т.д и т.д...
Я знаю, что можно рисовать линии многоугольника и заполнять их в соответствии с API Карт. Проблема в том, что или наборы результатов становятся огромными, или линии становятся очень грубыми и т. Д. Было бы хорошо, если бы GoogleMaps мог доставить страну в то время без соседей.
Кто-нибудь знает о хорошей базе данных координат с границами страны?
3 ответа
Вы можете создавать очень сложные полигоны в Картах без снижения производительности, если сохраните их в формате файла KML и загрузите их как KmlLayers. KML - это векторный формат файла для геоданных, основанный на XML. Прелесть использования KML-файлов в Картах Google заключается в том, что они отображаются на серверах Google в простых файлах PNG, соответствующих текущему разрешению и ограничивающей рамке вашего представления Карт в любое время, независимо от сложности исходных данных многоугольника. Таким образом, вся сложность обрабатывается на стороне сервера в Google.
Вот пример проекта, где я использовал такую маскировку для одного из федеральных штатов Германии. (Окружение в этом случае не полностью замаскировано, а только затемнено. Но вы также можете замаскировать их так же легко, изменив альфа-значение цвета заливки в файле KML.)
Для быстрого просмотра файлы KML также можно загрузить непосредственно на общедоступный веб-сайт Карт Google (введя их URL в поле поиска). Вот файл KML, который я использовал в вышеупомянутом проекте, загруженный непосредственно в Google Maps. (На самом деле я использовал здесь файл KMZ, но это просто файл KML, упакованный в ZIP-архив. Вы можете упаковать и распаковать его с помощью обычных инструментов ZIP.)
ОБНОВЛЕНИЕ ОБНОВЛЕНИЯ 07/2015: К сожалению, Google УДАЛЕН возможность прямого ввода URL-адреса файла KML/KMZ в поле поиска своих общедоступных Карт Google, когда они запустили обновленную версию в 2014 году. Вы по-прежнему можете использовать все методы, описанные в этом ответ, но вы не можете просто просмотреть файлы KML, введя их URL в поле поиска. Если вам нужен упомянутый выше KMZ для дальнейшего анализа, вы можете скачать его здесь. КОНЕЦ ОБНОВЛЕНИЯ
Обратите внимание, что Google подразумевает ограничение размера файлов KML/KMZ (в настоящее время 10 МБ несжатого, 3 МБ сжатого - подробности см. Здесь). Если ваши файлы KML должны быть слишком большими, есть программное обеспечение, доступное для уменьшения сложности (см. Примеры здесь и здесь).
Вы найдете бесплатные картографические данные во многих местах в Интернете, большинство из которых находятся в формате шейп-файла ESRI. Отличным источником карт для стран является http://www.gadm.org/ с большим преимуществом предоставления своих данных также в формате KML/KMZ. Если вам нужно конвертировать шейп-файлы ESRI в KML, взгляните на отличный (и бесплатный) конвертер OGR.
Обратите внимание, что файлы KML являются решением только в том случае, если полигоны статичны (как, например, граница Швеции) и не зависят от ввода данных пользователем. Для динамических полигонов вам все равно придется использовать класс Polygon API Карт с упомянутыми вами ограничениями сложности.
У меня была похожая проблема, и она была решена путем объединения гэмпов с таблицами Fusion:
var table_id = 420419; //can be exchanged wit another table
var FT_Query = "SELECT 'kml_4326' FROM "+ table_id +" WHERE 'name_0' NOT EQUAL TO 'SWEDEN'";
var FT_Options =
{
suppressInfoWindows: true,
query: FT_Query
};
var layer = new google.maps.FusionTablesLayer(table_id, FT_Options);
layer.setMap(map);
Рассматривали ли вы загрузку в пользовательскую карту?
Я сам этим не пользовался, но, надеюсь, эта ссылка немного вам поможет:)