disable clickable landmark on google map

后端 未结 6 624
粉色の甜心
粉色の甜心 2020-12-03 06:56

I\'m using google map API v3. I want to disable click action on default google landmark/poi. For example, when I zoom to UCLA, the school icon shows up (that\'s fine) but I

相关标签:
6条回答
  • 2020-12-03 07:27

    Google has exposed an option for this. See clickableIcons of google.maps.MapOptions in the docs.

    Example initialization code:

    map = new google.maps.Map(document.getElementById('map'), {
        clickableIcons: false
    });
    
    0 讨论(0)
  • 2020-12-03 07:29

    I understand that the OP wants a solution that persists the labels/icons but suspends the click events. I'm not sure this is possible; please star this issue

    However, some of us are drawing shapes sans Drawing Manager and labels/icons are obstructing the additions of new points. If it meets your requirements, you can temporarily remove the icons/labels. I've found that transit, poi, and landscape all need to be toggled:

    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 );
    
    }
    

    And the usage:

    //turn the labels/icons off
    map.poi(false);
    
    //turn them back on
    map.poi(true);
    
    0 讨论(0)
  • 2020-12-03 07:41

    add this option to mapOption clickableIcons: false

    this is more options i think you will

    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.

    0 讨论(0)
  • 2020-12-03 07:44

    This issue has been logged with google at:

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

    Please star and comment your needs on this issue there.

    0 讨论(0)
  • 2020-12-03 07:45

    I encountered this same problem. Google appears to have recently changed their api to make the base map labels "clickable" and there is not yet a simple API call to disable their clickablility. http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/f1ac9ad4da3606fe

    I would like to see google add a simple map option like this, but alas it doesn't exist yet

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

    The following solution works, but because it relies on custom styled map tiles, free maps are limited to (2,500 maps loads per day) - See Google Maps FAQ.

    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');
    }
    
    0 讨论(0)
  • 2020-12-03 07:48

    I understand that this question is old, but maybe this answer will help others:

    I'm not sure if this is legal, but I ended up exploring the code and made this:

    $("#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();
    }
    

    It worked for me, no infoWindow showing up, while preserving all the icons. Anyone who has an idea enhancing the code is welcome, the infoWindow is showing up just a bit the first time it is about to open, after that first one, it is completely gone.

    0 讨论(0)
提交回复
热议问题