2011-09-01 22 views
19

Tôi đang sử dụng API bản đồ google v3. Tôi muốn vô hiệu hóa thao tác nhấp chuột trên mốc google/poi mặc định. Ví dụ: khi tôi phóng to UCLA, biểu tượng trường hiển thị (điều đó là tốt) nhưng tôi không muốn người dùng nhấp và xem chi tiết của vị trí đó. Tôi nên sử dụng chức năng API nào?vô hiệu hóa mốc có thể nhấp trên bản đồ google

+0

tôi thấy một ví dụ về không khí bnb tìm kiếm bản đồ. Họ đã tắt nhấp chuột mốc mà không ẩn các mốc. Họ đã làm điều đó như thế nào? – Clark

+0

Tôi nghĩ bạn có thể ép buộc phiên bản cũ hơn của api của họ, như nói 3.3 hoặc 3.4, và nó có thể hoạt động, hoặc bạn có thể sử dụng giải pháp tôi đã đăng bên dưới với api mới nhất. – Glenn

+0

tôi sẽ thử. cảm ơn. – Clark

Trả lời

7

Tôi đã gặp phải sự cố tương tự này. Google dường như gần đây đã thay đổi api của họ để làm cho nhãn bản đồ cơ sở "có thể nhấp" và chưa có lệnh gọi API đơn giản để vô hiệu hóa tính khả thi của họ. http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/f1ac9ad4da3606fe

Tôi muốn nhìn thấy google thêm một lựa chọn bản đồ đơn giản như thế này, nhưng than ôi nó chưa hề tồn tại

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

Các giải pháp sau đây hoạt động, nhưng vì nó dựa trên gạch bản đồ tùy chỉnh phong cách, bản đồ miễn phí được giới hạn (2.500 lượt tải bản đồ mỗi ngày) - 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'); 
} 
+1

Chỉ cần đọc này, có vẻ như nó sẽ ẩn hoàn toàn các dấu hiệu thay vì chỉ đơn giản là làm cho chúng không thể nhấp được. Đúng không? –

+0

Điều đó là chính xác. Đối với một giải pháp không chính thức (không ổn định) để chúng hiển thị, hãy xem nhận xét của tôi theo câu hỏi trên về việc buộc phiên bản API cũ hơn. Nếu bạn tìm thấy một giải pháp tốt hơn tôi rất thích nghe về nó. – Glenn

+1

Cảm ơn! Điều này hoàn toàn hữu ích. :) –

0

Tôi hiểu rằng câu hỏi này là cũ, nhưng có lẽ câu trả lời này sẽ giúp những người khác:

Tôi không chắc chắn nếu điều này là hợp pháp, nhưng tôi đã kết thúc khám phá mã và thực hiện điều này:

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

Nó làm việc cho tôi, không có thông tinWindow hiển thị, trong khi vẫn giữ tất cả các biểu tượng. Bất cứ ai có ý tưởng tăng cường mã đều được chào đón, infoWindow chỉ hiển thị một chút trong lần đầu tiên nó sắp mở, sau lần đầu tiên, nó hoàn toàn biến mất.

1

Tôi hiểu rằng OP muốn một giải pháp duy trì nhãn/biểu tượng nhưng tạm ngưng các sự kiện nhấp chuột. Tôi không chắc điều này là có thể; vui lòng star this issue

Tuy nhiên, một số người trong chúng ta vẽ hình dạng sans Trình quản lý bản vẽ và nhãn/biểu tượng đang cản trở việc thêm điểm mới. Nếu nó đáp ứng yêu cầu của bạn, bạn có thể tạm thời xóa các biểu tượng/nhãn. Tôi đã phát hiện ra rằng quá cảnh, poi, và cảnh quan tất cả cần phải được 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); 

} 

Và việc sử dụng:

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

//turn them back on 
map.poi(true); 
17

Google đã tiếp xúc với một tùy chọn cho việc này. Xem clickableIcons của google.maps.MapOptionsin the docs.

Ví dụ mã khởi tạo:

map = new google.maps.Map(document.getElementById('map'), { 
    clickableIcons: false 
}); 
+1

Điều này thực sự cần được đánh dấu là câu trả lời ngay bây giờ. – keaukraine

1

thêm tùy chọn này để mapOption clickableIcons: false

đây là thêm nhiều lựa chọn tôi nghĩ rằng bạn sẽ

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.

Các vấn đề liên quan