2012-01-17 45 views
14

Kể từ API Google Maps v3.6, bản đồ hiện bao gồm "điểm ưa thích", là điểm đánh dấu màu xám được nhúng vào bản đồ. Khi người dùng nhấp vào biểu tượng này, InfoWindow xuất hiện cùng với thông tin về doanh nghiệp đó (hoặc công viên, bệnh viện, v.v.)Tắt hành vi nhấp chuột của điểm đánh dấu POI trong API JS Maps của Google Maps

Bạn có thể tắt chúng bằng cách đặt Kiểu. (Xem "Style mảng Ví dụ")

https://code.google.com/apis/maps/documentation/javascript/styling.html

Khi họ đang tắt, các biểu tượng, tên, và các khu vực bóng mờ (cho công viên và bệnh viện) bỏ đi.

Trước khi API Google Maps v3.6, không có biểu tượng; chỉ tên và vùng.

Câu hỏi: có cách nào để xóa hành vi "biểu tượng nhấp để mở cửa sổ thông tin" của các địa điểm ưa thích này không? Tôi vẫn muốn giữ các biểu tượng, tên và vùng; chỉ muốn xóa hành vi nhấp chuột.

Câu hỏi thay thế: có cách nào để tải xuống/lưu JavaScript của v3.5 của API Google Maps để lưu trữ trên máy chủ của tôi không? Hiện tại, v3.5 đang hoạt động tốt cho những gì tôi cần. Vào tháng 2, Google sẽ không còn cung cấp v3.5 mã và thay vào đó sẽ chỉ cung cấp v3.6, v3.7, v3.8.

Ngừng cung cấp các phiên bản nhỏ của Google Maps API v3, và sử dụng phiên bản "đông lạnh" của một API:

https://code.google.com/apis/maps/documentation/javascript/basics.html#Versioning

Những điều tôi đã cố gắng và xem xét: Thêm một người biết lắng nghe sự kiện khi bản đồ được nhấp không hoạt động vì các điểm đánh dấu được nhúng được nhấp thay vì bản đồ. Việc thêm "có thể nhấp: sai" làm thuộc tính là một ảnh trong bóng tối, không có kết quả. Đặt "khả năng hiển thị: tắt" sẽ xóa tất cả, để bản đồ có ít nội dung hơn. Đặt "chế độ hiển thị: đơn giản hóa" sẽ xóa tên của vị trí, mặc dù hành vi onclick vẫn xuất hiện. Việc đặt một lớp phủ DIV ẩn trên bản đồ có thể hoạt động, mặc dù nó sẽ loại bỏ khả năng xoay/thu phóng/kéo bản đồ mà không làm tăng độ phức tạp.

Đặt kiểu để featureType: poi, elementType: nhãn, chế độ hiển thị: tắt sẽ hiển thị vùng hồng/xám/xanh cho bệnh viện/nghĩa trang/công viên, không có điểm đánh dấu hoặc tên. Nó trả về nhiều màu hơn cho bản đồ.

+0

http: //stackoverflow.com/questions/7950030/can-i-remove-just-the-popup-bubbles-of-pois-in-google-maps-api-v3/8361698#8361698 – jenswirf

+0

http://stackoverflow.com/ câu hỏi/8331325/google-maps-api-is-there-any-way-to-show-poi-điểm đánh dấu-cơ sở-không-m – jenswirf

+0

Yêu cầu nâng cao trong [Trình theo dõi vấn đề của Google] (http://code.google.com/p/gmaps-api-issues/issues/detail? id = 3866) –

Trả lời

1

Một vài điều cần phải nhận thức:

1) Nếu bản đồ của bạn là giao thông cao, bạn có thể thấy mình vi phạm TOS của Google Maps. Bạn phải sử dụng một phiên bản chính thức. Nếu đó là blog của riêng bạn hoặc một cái gì đó khác lưu lượng truy cập thấp, không ai sẽ nhận thấy hoặc quan tâm.

2) Đây chỉ là phỏng đoán về phía tôi, nhưng tôi đã nhận thấy những POI này của bản thân mình và họ cảm thấy khó chịu. Tôi khá chắc chắn đây là những "quảng cáo nội tuyến" trả tiền, do đó, để nói chuyện. Một số trạm xăng và chuỗi quán ăn có chúng, vì vậy bạn sẽ sớm thấy các bản đồ của Google bị spam với các điểm đánh dấu POI này. Nếu họ cho phép những người được tắt trong API, nó loại đi ngược lại lợi ích kinh doanh của những người trả tiền cho biểu tượng POI ... vì vậy tôi rất nghi ngờ rằng bạn sẽ có thể loại bỏ chúng.

Nếu bạn tìm thấy cách, vui lòng LÀM ĐĂNG giải pháp! Cảm ơn.

1

Tôi không chắc chắn đây không phải là vi phạm TOS của Google Maps, nó hơi bị hack và không hoạt động trên IE < 9, nhưng bạn có thể nghe sự kiện dom, để phát hiện ra cửa sổ, sử dụng đột biến Observer

đây là một plunkr để chứng minh: http://plnkr.co/edit/pGep9OZFligLhRtHlhgk bạn có thể kiểm tra trong giao diện điều khiển, một sự kiện được bắn (trên thực tế hai lần) khi bạn click vào một địa điểm ưa thích, và cửa sổ bị giấu

1

Bằng tham chiếu URL này (https://stackoverflow.com/a/24234818/6160436), bằng cách nào đó, tôi đã quản lý để ẩn cửa sổ Thông tin của POI và gọi trình xử lý sự kiện nhấp chuột của bản đồ khi người dùng nhấp vào POI. Nhưng tôi không chắc liệu điều này có vi phạm TOS hay không, vì vậy hãy tự chịu rủi ro.

 //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's 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'); 
     }); 
+1

Xin chào, tôi thích câu trả lời này. Kiểm tra những gì tôi đã làm với mã của bạn http://stackoverflow.com/questions/37955529/disable-or-change-default-behavior-of-location-on-google-maps-api-3/37956345#37956345 –

8

Tôi không chắc chắn nếu điều này vẫn còn phù hợp với bạn, nhưng Google đã làm, trên thực tế, giải quyết vấn đề vào ngày năm 2016, tất cả các bạn cần làm là clickableIcons-false trong mapTùy chọn

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