отключить кликабельный ориентир на карте Google - PullRequest
23 голосов
/ 01 сентября 2011

Я использую Google Map API v3.Я хочу отключить действие клика по умолчанию для ориентира / точки Google.Например, когда я увеличиваю изображение до UCLA, появляется значок школы (это нормально), но я не хочу, чтобы пользователь нажимал и просматривал сведения об этом месте.Какую функцию API я должен использовать?

Ответы [ 6 ]

29 голосов
/ 20 июля 2016

Google выставил опцию для этого. См. clickableIcons из google.maps.MapOptions в документах .

Пример кода инициализации:

map = new google.maps.Map(document.getElementById('map'), {
    clickableIcons: false
});
7 голосов
/ 18 сентября 2011

Я столкнулся с этой же проблемой.Похоже, что Google недавно изменил свои API, чтобы сделать ярлыки базовой карты «кликабельными», и пока нет простого вызова API, чтобы отключить их кликабельность.http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/f1ac9ad4da3606fe

Я бы хотел, чтобы Google добавил простой вариант карты, подобный этому, но, увы, его пока нет

var opts = { clickableLabels:false };
var map = new maps.google.com.map(div,opts);

Следующее решение работает, но потому что оно опирается напользовательские стили листов карт, количество бесплатных карт ограничено (2500 загрузок карт в день) - См. часто задаваемые вопросы по Google Maps .

function initialize() {

  // For more details see 
// http://code.google.com/apis/maps/documentation/javascript/styling.html
  var noPOILabels = [
    { 
      featureType: "poi", 
      elementType: "labels", 
      stylers: [ { visibility: "off" } ] 

    }
  ];

  // Create a new StyledMapType object, passing it the array of styles,
  // as well as the name to be displayed on the map type control.
  var noPOIMapType = new google.maps.StyledMapType(noPOILabels,
    {name: "NO POI"});

  // Create a map object, and include the MapTypeId to add
  // to the map type control.
  var mapOptions = {
    zoom: 11,
    center: new google.maps.LatLng(55.6468, 37.581),
    mapTypeControlOptions: {
      mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'no_poi']
    }
  };
  var map = new google.maps.Map(document.getElementById('map_canvas'),
    mapOptions);

  //Associate the styled map with the MapTypeId and set it to display.
  map.mapTypes.set('no_poi', noPOIMapType);
  map.setMapTypeId('no_poi');
}
5 голосов
/ 16 марта 2017

добавить эту опцию в mapOption clickableIcons: false

это больше опций, я думаю, вы будете

draggable: true, // this is for disable the Draggable
disableDefaultUI: true, // this for disable Default UI
fullscreenControl: false, // this is for disable Full Screen
scrollwheel: true, // this is for disable Scroll Wheel
disableDoubleClickZoom: false, // this is for disable Double Click Zoom
draggableCursor:'crosshair',// this is for cursor type
draggingCursor:'move', // this is for dragging cursor type
minZoom: 3, // this is for min zoom for map
maxZoom: 18 , // this is for max zoom for map
//note : max, min zoom it's so important for my design.
zoom: 14, // this is to make default zoom
clickableIcons: false, // this is to disable all labels icons except your custom infowindow or Infobox.
3 голосов
/ 12 октября 2012

Эта проблема была зарегистрирована с Google по адресу:

http://code.google.com/p/gmaps-api-issues/issues/detail?id=3866

Пожалуйста, пометьте и прокомментируйте ваши потребности по этой проблеме.

1 голос
/ 25 октября 2015

Я понимаю, что OP хочет решение, которое сохраняет ярлыки / значки, но приостанавливает события щелчка.Я не уверен, что это возможно; отметьте этот номер

Однако некоторые из нас рисуют фигуры без Менеджера чертежей, а надписи / значки препятствуют добавлению новых точек.Если это соответствует вашим требованиям, вы можете временно удалить значки / ярлыки.Я обнаружил, что транзит , poi и ландшафт все должны быть переключены:

var map = new google.maps.Map(document.getElementById("map"), {});
map.poi = function(state){

  var styles = [
    {
      "featureType": "transit",
      "stylers": [
        { "visibility": "off" }
      ]
    },{
      "featureType": "poi",
      "stylers": [
        { "visibility": "off" }
      ]
    },{
      "featureType": "landscape",
      "stylers": [
        { "visibility": "off" }
      ]
    }
  ];

  this.set("styles", (state)? {} : styles );

}

И использование:

//turn the labels/icons off
map.poi(false);

//turn them back on
map.poi(true);
0 голосов
/ 02 января 2015

Я понимаю, что этот вопрос старый, но, возможно, этот ответ поможет другим:

Я не уверен, что это законно, но я закончил изучать код и сделал это:

$("#google-map").on("mousedown",function(){
    setTimeout(function(){
        disableInfoWindows();
    },500);
});

function disableInfoWindows()
{
    $(".gm-iw.gm-sm").parent().parent().remove();
    $("[style='position: absolute; left: -2px; top: -336px; width: 59px; height: 492px; -webkit-user-select: none; border: 0px; padding: 0px; margin: 0px;']")
    .parent()
    .parent()
    .remove();
}

Это сработало для меня, но не показывалось окно информации при сохранении всех значков.Любой, у кого есть идея по улучшению кода, приветствуется, информационное окно появляется только в первый раз, когда оно собирается открыться, после того, как это первое, оно полностью исчезло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...