Ответ 1
Эта проблема была зарегистрирована в google по адресу:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=3866
Пожалуйста, смотрите и прокомментируйте свои потребности по этой проблеме.
Начиная с Google Maps API версии 3.6, теперь карты включают "интересные точки", которые представляют собой серые маркеры, встроенные в карту. Когда пользователь нажимает на этот значок, появляется информация InfoWindow с информацией об этом бизнесе (или в парке, больнице и т.д.).
Их можно отключить, установив стиль. (См. "Пример массива стилей" )
https://code.google.com/apis/maps/documentation/javascript/styling.html
Как только они отключены, исчезают значки, имена и затененные области (для парков и больниц).
До Google Maps API версии 3.6 не было значков; только имена и области.
Вопрос: есть ли способ удалить поведение этих точек интереса по кнопке "click icon to open info"? Я все еще хочу сохранить значки, имена и регионы; только хотите удалить поведение кликов.
Альтернативный вопрос: есть ли способ загрузить/сохранить JavaScript v3.5 API Карт Google для хранения на моем сервере? В настоящее время v3.5 отлично работает для того, что мне нужно. В феврале Google больше не будет предоставлять v3.5 кода и вместо этого будет предоставлять только v3.6, v3.7, v3.8.
Устранение незначительных версий API Карт Google v3 и использование "замороженной" версии API:
https://code.google.com/apis/maps/documentation/javascript/basics.html#Versioning
Вещи, которые я пробовал и рассмотрел: Добавление прослушивателя событий при щелчке по карте не работает, потому что вместо встроенных маркеров щелкнут. Добавление "clickable: false" в качестве свойства - это выстрел в темноте, без результата. Установка "visiblility: off" удаляет все, оставляя карту с меньшим количеством контента. Установка "видимость: упрощенная" удаляет имя местоположения, хотя поведение onclick все еще присутствует. Нанесение невидимого DIV, накладывающегося на карту, может работать, хотя это позволит удалить возможность панорамирования/масштабирования/перетаскивания карты без увеличения сложности.
Настройка стиля так, чтобы featureType: poi, elementType: labels, visibility: off приведет к отображению областей розовый/серый/зеленый для больниц/кладбищ/парков без маркера или имени. Он возвращает больше цвета на карту.
Эта проблема была зарегистрирована в google по адресу:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=3866
Пожалуйста, смотрите и прокомментируйте свои потребности по этой проблеме.
Я не уверен, что это все еще имеет отношение к вам, но Google действительно разрешил проблему в апреле 2016 года. Все, что вам нужно сделать, это от clickableIcons
до false
в MapOptions
Несколько вещей, о которых нужно знать:
1) Если ваша карта имеет высокий трафик, вы можете оказаться в нарушении TOS Google Maps. Вы должны использовать официальную версию. Если это ваш собственный блог или что-то еще небольшое движение, никто не заметит и не заботится.
2) Это только догадка с моей стороны, но я заметил эту POI и раздражен ими. Я уверен, что они заплатили за "встроенные объявления", так сказать. Некоторые бензоколонки и сети для закусок имеют их, поэтому вы скоро увидите, что карты Google рассылаются спамом с этими маркерами POI. Если они позволяют отключить их в API, то это идет вразрез с деловыми интересами тех, кто заплатил за значок POI... поэтому я очень сомневаюсь, что вы сможете их удалить.
Если вы найдете способ, пожалуйста, пожалуйста, ПОЛУЧИТЕ решение! Спасибо.
Я не уверен, что это не является нарушением Google Maps TOS, он немного взломан и не работает на IE < 9, но вы можете прослушивать событие dom, для обнаружения создания окна, используя Mutation Observer
Вот демон, демонстрирующий: http://plnkr.co/edit/pGep9OZFligLhRtHlhgk Вы можете проверить консоль, событие запускается (фактически дважды), когда вы нажимаете на POI, и окно скрыто
Переходя по этому URL-адресу (fooobar.com/info/371434/...), мне как-то удалось скрыть информационные окна POI и вызвать прослушиватель событий клика по карте, когда пользователь нажимает POI. Но я не уверен, нарушает ли это TOS или нет, поэтому используйте на свой страх и риск.
//keep a reference to the original setPosition-function
var fx = google.maps.InfoWindow.prototype.setPosition;
//override the built-in setPosition-method
google.maps.InfoWindow.prototype.setPosition = function () {
//this property isn't documented, but as it seems
//it only defined for InfoWindows opened on POI's
if (this.logAsInternal) {
if (this.getPosition()) {
console.log(this.getPosition());
google.maps.event.trigger(map, 'click', {latLng: this.getPosition()});
}
else{
google.maps.event.addListenerOnce(this, 'map_changed',function () {
console.log(this.getPosition());
google.maps.event.trigger(map, 'click', {latLng: this.getPosition()});
// var map = this.getMap();
// //the infoWindow will be opened, usually after a click on a POI
// if (map) {
//trigger the click
var removeInfoWindow = null;
removeInfoWindow = setInterval(function(){
if ($('.gm-style-iw').parent().length) {
$('.gm-style-iw').parent().hide();
clearInterval(removeInfoWindow);
};
},1);
// }
});
};
}
//call the original setPosition-method
fx.apply(this, arguments);
};
google.maps.event.addListener(map,'click',function(e){
alert('clicked @'+e.latLng.toString())
console.log('ok');
});