【问题标题】:How to position custom button controls on Google Maps API?如何在 Google Maps API 上放置自定义按钮控件?
【发布时间】:2017-06-14 21:54:44
【问题描述】:

我有这个基于 Google Maps APi v3 构建的简单地图 ....

<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var map;
      function initMap() {



      var myOptions = {
          zoom: 8,
          center: {lat: -34.397, lng: 150.644},
          mapTypeId: google.maps.MapTypeId.ROADMAP
      };
      var map = new google.maps.Map(document.getElementById("map"), myOptions);


      //### Add a button on Google Maps ...
      var controlMarkerUI = document.createElement('DIV');
      controlMarkerUI.style.cursor = 'pointer';
      controlMarkerUI.style.backgroundImage = "url(http://localhost/marker.png)";
      controlMarkerUI.style.height = '28px';
      controlMarkerUI.style.width = '25px';
      controlMarkerUI.style.top = '11px';
      controlMarkerUI.style.left = '120px';
      controlMarkerUI.title = 'Click to set the map to Home';
      //myLocationControlDiv.appendChild(controlUI);

      map.controls[google.maps.ControlPosition.LEFT_TOP].push(controlMarkerUI);

      //### Add a button on Google Maps ...
      var controlTrashUI = document.createElement('DIV');
      controlTrashUI.style.cursor = 'pointer';
      controlTrashUI.style.backgroundImage = "url(http://localhost/trash.png)";
      controlTrashUI.style.height = '28px';
      controlTrashUI.style.width = '25px';
      controlTrashUI.style.top = '11px';
      controlTrashUI.style.left = '150px';
      controlTrashUI.title = 'Click to set the map to Home';
      //myLocationControlDiv.appendChild(controlUI);

      map.controls[google.maps.ControlPosition.LEFT_TOP].push(controlTrashUI);
}

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

地图结果如下

在我的代码中,标记和垃圾桶这两个按钮的样式设置为应该以这种方式放置在“卫星”按钮旁边

为什么我的样式设置没有保留?

建议/例子?

【问题讨论】:

    标签: javascript html css google-maps google-maps-api-3


    【解决方案1】:

    我有一个答案,不是 100% 如果这是您正在寻找的,但这里是修改后的代码。

    <html>
    <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
     </style>
    </head>
    <body>
    
    <div id="map"></div>
    
    <script>
      var map;
      function initMap() {
    
          var myOptions = {
              zoom: 8,
              center: {lat: -34.397, lng: 150.644},
              mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById("map"), myOptions);
    
          // Create a div to hold the control.
          var controlDiv = document.createElement('div');
    
          //### Add a button on Google Maps ...
          var controlMarkerUI = document.createElement('div');
          controlMarkerUI.style.cursor = 'pointer';
          controlMarkerUI.style.backgroundColor = 'blue';
          controlMarkerUI.style.height = '28px';
          controlMarkerUI.style.width = '25px';
          controlMarkerUI.style.marginLeft = '10px';
          controlMarkerUI.style.marginTop = '10px';
          controlMarkerUI.title = 'Click to set the map to Home';
          controlDiv.appendChild(controlMarkerUI);
    
    
          //### Add a button on Google Maps ...
          var controlTrashUI = document.createElement('div');
          controlTrashUI.style.cursor = 'pointer';
          controlTrashUI.style.backgroundColor = 'black';
          controlTrashUI.style.height = '28px';
          controlTrashUI.style.width = '25px';
          controlTrashUI.style.marginLeft = '60px';
          controlTrashUI.title = 'Click to set the map to Home';
          controlMarkerUI.appendChild(controlTrashUI);
    
          map.controls[google.maps.ControlPosition.TOP_LEFT].push(controlDiv);
    
    }
    
    </script>
        <script src="https://maps.googleapis.com/maps/api/js?key=<PUT KEY 
     HEREEEE>&callback=initMap"
    async defer></script>
      </body>
    </html>
    

    您将不得不将您的徽标更改回您的本地主机,我认为这是 是做你想做的最好的方式。不要忘记您的 API 密钥!

    输出: the result

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      相关资源
      最近更新 更多