То, что я ищу, - это способ выделить определенную область на карте Google Maps, выделяя остальной мир.
Я слышал о каком-то решении использовать 2 многоугольника, из которых 1 виден, а другой нет, и что он работает только в том случае, если карта статична (нет движения карты). Однако я хочу, чтобы пользователь мог масштабировать и перетаскивать карту.
Я также интересуюсь другими способами, о которых я не думал, чтобы подчеркнуть область.
Обновить:
Когда я пробую решение, опубликованное radek (т.е. создаю KML с Polygon с externalBoundaryIs (больше, чем view) и innerBoundaryIs (являющийся областью для выделения)), я получаю проблему, что при увеличении масштаба прямоугольные области не покрываются окружающий полигон больше. Видеть:
Кто-нибудь с опытом / решением этого?
Update2:
Наконец-то у меня было время протестировать решение Radek с помощью Google Fusion Tables. Сначала у меня были те же проблемы с отсутствующими плитками, что и с KML (см. Рисунок выше), но после другой загрузки кажется, что он поднялся и показывал плитки полностью правильно. У меня такое ощущение, что хакер jquery в его решении предназначался для плиток, которые не загружались:
setTimeout(function(){
$("img[src*='googleapis']").each(function() {
$(this).attr("src",$(this).attr("src")+"&"+(new Date()).getTime());
});
}, 5000);
Поскольку плитки, казалось, загружались после обновления, я не использовал взломать сам. Если ошибка возникает для каждого нового пользователя, я буду экспериментировать с ней.
если инструмент, опубликованный @radek, не помог вам, есть еще один, который использует простые функции google.maps.Polygon: http://maps.vasile.ch/geomask/
По сути, он следует алгоритму числа обмоток: многоугольник маски (вселенной) оцифровывается по часовой стрелке, а все внутренние многоугольники оцифровываются против часовой стрелки http://en.wikipedia.org/wiki/Winding_number
источник