Могу ли я показать одну страну (замаскированную) в 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);

Рассматривали ли вы загрузку в пользовательскую карту?

Я сам этим не пользовался, но, надеюсь, эта ссылка немного вам поможет:)

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