Могу ли я показать одну страну (замаскированную) в GoogleMaps? - PullRequest
19 голосов
/ 11 мая 2010

Возможно ли замаскировать соседние страны в GoogleMap? В моем случае я просто хочу показать Швецию с одной точки зрения. На второй взгляд только Норвегия, Дания и т. Д. И т. Д. *

Я знаю, что можно рисовать линии многоугольника и заполнять их в соответствии с API Карт. Проблема в том, что или наборы результатов становятся огромными, или линии становятся очень грубыми и т. Д. Было бы хорошо, если бы GoogleMaps мог доставить страну в то время без соседей.

Кто-нибудь знает о хорошей базе данных координат с границами страны?

Ответы [ 3 ]

21 голосов
/ 06 ноября 2012

Вы можете создавать очень сложные многоугольники в Картах без снижения производительности, если сохраните их в формате файла 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 Карт с упомянутыми вами ограничениями сложности.

4 голосов
/ 22 ноября 2012

имел похожую проблему и справился с ней, объединив гэмпы с таблицами 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);
0 голосов
/ 11 мая 2010

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

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

...