谷歌地图Api按钮;路由到标记“/转到谷歌地图

Google Maps Api button for "route to marker" / go to Google Maps

本文关键字:谷歌地图 路由 Api 按钮      更新时间:2024-03-16

我想知道是否可以在谷歌地图上设置一个按钮,将您重定向到谷歌地图,提交目的地地址,这样用户只需输入自己的地址即可计算路线。

编辑:如果有一种方法可以直接实现一个带有简单链接的自定义按钮(这会导致谷歌上的共享地图),那么它也同样有效。

编辑2:设法在谷歌文档的帮助下自己解决了这个问题https://developers.google.com/maps/documentation/javascript/examples/control-custom

花了很多js的时间,但现在它可以工作了

目标URL为:

https://www.google.com/maps/dir//{encodedAddress}

注意dir后面有两个斜线,当您使用1个斜线时,地址将用作起始地址。地址必须编码(例如通过encodeURIComponent

示例按钮(使用他的textContent作为地址):

<button onclick="top.window.open('https://www.google.com/maps/dir//'+
                                  encodeURIComponent(this.textContent.trim()),
                                 'gmap')">
    Berlin
</button>

添加谷歌地图文档中的示例以供将来参考。来源:https://developers.google.com/maps/documentation/javascript/examples/control-custom

var map;
var chicago = {lat: 41.85, lng: -87.65};
/**
 * The CenterControl adds a control to the map that recenters the map on
 * Chicago.
 * This constructor takes the control DIV as an argument.
 * @constructor
 */
function CenterControl(controlDiv, map) {
  // Set CSS for the control border.
  var controlUI = document.createElement('div');
  controlUI.style.backgroundColor = '#fff';
  controlUI.style.border = '2px solid #fff';
  controlUI.style.borderRadius = '3px';
  controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';
  controlUI.style.cursor = 'pointer';
  controlUI.style.marginBottom = '22px';
  controlUI.style.textAlign = 'center';
  controlUI.title = 'Click to recenter the map';
  controlDiv.appendChild(controlUI);
  // Set CSS for the control interior.
  var controlText = document.createElement('div');
  controlText.style.color = 'rgb(25,25,25)';
  controlText.style.fontFamily = 'Roboto,Arial,sans-serif';
  controlText.style.fontSize = '16px';
  controlText.style.lineHeight = '38px';
  controlText.style.paddingLeft = '5px';
  controlText.style.paddingRight = '5px';
  controlText.textContent = 'Center Map';
  controlUI.appendChild(controlText);
  // Setup the click event listeners: simply set the map to Chicago.
  controlUI.addEventListener('click', function() {
    map.setCenter(chicago);
  });
}
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 12,
    center: chicago
  });
  // Create the DIV to hold the control and call the CenterControl()
  // constructor passing in this DIV.
  var centerControlDiv = document.createElement('div');
  var centerControl = new CenterControl(centerControlDiv, map);
  centerControlDiv.index = 1;
  map.controls[google.maps.ControlPosition.TOP_CENTER].push(centerControlDiv);
}
/* 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;
}
<div id="map"></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>