簡體   English   中英

使用基於要素屬性的外部按鈕切換 Google Maps API 數據層要素

[英]Toggle Google Maps API data layer features with external buttons based on feature properties

Google Maps API Data Layer - Dynamic Styling的文檔解釋了如何向功能添加事件偵聽器,以便在單擊該功能時,我們可以更改其屬性。

如何使用地圖外部的按鈕執行類似操作? 在小提琴示例中,如何通過單擊“藍色”按鈕將地圖上具有“藍色”屬性的字母變為藍色?

小提琴示例

<!DOCTYPE html>
<html>
  <head>
    <title>Data Layer: Dynamic Styling</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>#map {
    height: 500px;
  }
  </style>
  </head>
  <body>
<button id="blue-button">blue</button>
<button id="red-button">red</button>
<button id="green-button">green</button>
<button id="yellow-button">yellow</button>
<div id="map"></div>
    <script>

      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          zoom: 4,
          center: {lat: -28, lng: 137}
        });

        // Load GeoJSON.
        map.data.loadGeoJson(
            'https://storage.googleapis.com/mapsdevsite/json/google.json');

        // Color each letter gray. Change the color when the isColorful property
        // is set to true.
        map.data.setStyle(function(feature) {

          var color = 'gray';

          if (feature.getProperty('isColorful')) {
            color = feature.getProperty('color');
            console.log(color)
          }

          return ({
            fillColor: color,
            strokeColor: color,
            strokeWeight: 2
          });

        });

        // When the user clicks, set 'isColorful', changing the color of the letters.
        map.data.addListener('click', function(event) {
          event.feature.setProperty('isColorful', true);
        });

      }
    </script>
    <script async defer
    src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB9BG3aO_hV9r8qaGkYmcE5eSx7c4K7be4&callback=initMap">
    </script>
  </body>
</html>

為您的按鈕單擊添加一個偵聽器。 這可以通過不同的方式完成。 其中之一是使用谷歌地圖addDomListener

然后您必須遍歷所有功能並設置適當的樣式,例如:

 var map; function initMap() { map = new google.maps.Map(document.getElementById('map-canvas'), { zoom: 4, center: { lat: -28, lng: 137 } }); // Load GeoJSON. map.data.loadGeoJson( 'https://storage.googleapis.com/mapsdevsite/json/google.json'); // Color each letter gray. Change the color when the isColorful property // is set to true. map.data.setStyle(function(feature) { var color = 'gray'; if (feature.getProperty('isColorful')) { color = feature.getProperty('color'); console.log(color) } return ({ fillColor: color, strokeColor: color, strokeWeight: 2 }); }); // When the user clicks, set 'isColorful', changing the color of the letters. map.data.addListener('click', function(event) { event.feature.setProperty('isColorful', true); }); google.maps.event.addDomListener(document.getElementById('blue-button'), 'click', function() { map.data.setStyle(function(feature) { if (feature.getProperty('color') == 'blue') { return ({ fillColor: 'blue', strokeColor: 'blue', strokeWeight: 2 }); } else { return ({ fillColor: 'grey', fillOpacity: .5, strokeColor: 'grey', strokeWeight: 2 }); } }); }); }
 #map-canvas { height: 160px; }
 <button id="blue-button">blue</button> <div id="map-canvas"></div> <!-- Replace the value of the key parameter with your own API key. --> <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initMap"> </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM