Google 地图 Api 按钮 "route to marker" / 转到 Google 地图
Google Maps Api button for "route to marker" / go to Google Maps
我想知道是否可以在 Google 地图上设置一个按钮,将您重定向到 Google 地图,提交目的地地址,这样用户只需要输入his/her自己的地址来计算路由。
编辑:如果有一种方法可以直接使用简单的 link 实现自定义按钮(这会导致 Google 上的共享地图),那也可以正常工作。
编辑 2:在 google 文档 https://developers.google.com/maps/documentation/javascript/examples/control-custom
的帮助下自行解决
花了很多 js 摆弄,但它现在可以工作了
目标-URL 将是:
https://www.google.com/maps/dir//{encodedAddress}
注意 dir 后面的 2 个斜杠,当你使用 1 个斜杠时,地址将用作起始地址。地址必须经过编码(例如通过 encodeURIComponent
)
示例按钮(使用他的 textContent
作为地址):
<button onclick="top.window.open('https://www.google.com/maps/dir//'+
encodeURIComponent(this.textContent.trim()),
'gmap')">
Berlin
</button>
添加 Google 地图文档中的示例以供将来参考。资料来源: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>
我想知道是否可以在 Google 地图上设置一个按钮,将您重定向到 Google 地图,提交目的地地址,这样用户只需要输入his/her自己的地址来计算路由。
编辑:如果有一种方法可以直接使用简单的 link 实现自定义按钮(这会导致 Google 上的共享地图),那也可以正常工作。
编辑 2:在 google 文档 https://developers.google.com/maps/documentation/javascript/examples/control-custom
的帮助下自行解决花了很多 js 摆弄,但它现在可以工作了
目标-URL 将是:
https://www.google.com/maps/dir//{encodedAddress}
注意 dir 后面的 2 个斜杠,当你使用 1 个斜杠时,地址将用作起始地址。地址必须经过编码(例如通过 encodeURIComponent
)
示例按钮(使用他的 textContent
作为地址):
<button onclick="top.window.open('https://www.google.com/maps/dir//'+
encodeURIComponent(this.textContent.trim()),
'gmap')">
Berlin
</button>
添加 Google 地图文档中的示例以供将来参考。资料来源: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>