Jquery 谷歌地图API V3-如何更改方向服务的起点和终点
我一开始通过谷歌地图API设置一个直接服务的起点和终点没有问题。(我的代码如下)。但是,我们如何在页面加载后动态更改这些值,以便我的网站访问者可以继续在我的表单字段中输入他们键入的各种起始/终止点Jquery 谷歌地图API V3-如何更改方向服务的起点和终点,jquery,google-maps-api-3,Jquery,Google Maps Api 3,我一开始通过谷歌地图API设置一个直接服务的起点和终点没有问题。(我的代码如下)。但是,我们如何在页面加载后动态更改这些值,以便我的网站访问者可以继续在我的表单字段中输入他们键入的各种起始/终止点 function directions(map) { /*EXTENDED GOOGLE MAP DIRECTIONS*/ var from = '12345 New York, NY'; var to = '12345 Indianapolis, IN'; var directionsSer
function directions(map) {
/*EXTENDED GOOGLE MAP DIRECTIONS*/
var from = '12345 New York, NY';
var to = '12345 Indianapolis, IN';
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
var directionsRequest = {
origin: from,
destination: to,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
};
directionsService.route(
directionsRequest,
function(response, status)
{
if (status == google.maps.DirectionsStatus.OK)
{
new google.maps.DirectionsRenderer({
map: map,
directions: response
});
directionsDisplay.setDirections(response);
}
else
$("#error").append("Unable to retrieve your route<br />");
}
);
/**/
}
function initialize() {
/*GOOGLE MAP API V3*/
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var mapOptions = {
zoom : 17,
center : new google.maps.LatLng(39.868041, -86.145084),
mapTypeId : google.maps.MapTypeId.HYBRID,
backgroundColor : '#333'
};
var marker = new google.maps.Marker({
position: mapOptions.center,
map: map,
title: 'My Location'
});
//my extended directions for my map
directions(map);
setTimeout(function(){$('base').prevAll().remove();}, 1000);
/**/
}
function loadScript() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&' + 'callback=initialize';
document.body.appendChild(script);
}
$(window).load(function(){
loadScript();
});
功能方向(地图){
/*扩展谷歌地图方向*/
var from='12345纽约州';
var to='12345印第安纳波利斯,单位';
var directionsService=new google.maps.directionsService();
var directionsDisplay=new google.maps.DirectionsRenderer();
方向显示.setMap(地图);
directions display.setPanel(document.getElementById('directions-panel');
变量方向请求={
出处:从,,
目的地:至,
travelMode:google.maps.Directions travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC
};
方向服务.路线(
指示请求,
功能(响应、状态)
{
if(status==google.maps.directionstatus.OK)
{
新google.maps.DirectionsRenderer({
地图:地图,
方向:回应
});
方向显示。设置方向(响应);
}
其他的
$(“#错误”).append(“无法检索您的路线
”;
}
);
/**/
}
函数初始化(){
/*谷歌地图API V3*/
var map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
变量映射选项={
缩放:17,
中心:新google.maps.LatLng(39.868041,-86.145084),
mapTypeId:google.maps.mapTypeId.HYBRID,
背景颜色:“#333”
};
var marker=new google.maps.marker({
位置:mapOptions.center,
地图:地图,
标题:“我的位置”
});
//我的地图的延伸方向
方向(地图);
setTimeout(函数(){$('base').prevAll().remove();},1000);
/**/
}
函数loadScript(){
var script=document.createElement('script');
script.type='text/javascript';
script.src=https://maps.googleapis.com/maps/api/js?v=3.exp&“+”回调=初始化“;
document.body.appendChild(脚本);
}
$(窗口)。加载(函数(){
loadScript();
});
以下谷歌地图设置允许我在最初加载带有起点标记的地图。然后,如果web用户决定提交原点,该数据将被发送到directionService进行计算并最终显示。我还将驾驶踏板加载到面板中。我希望这对需要设置和重新计算起点和终点的人有所帮助:
使用API密钥调用Google地图
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>
然后使用以下命令
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
function initialize() {
/*INITIALIZE GOOGLE MAPS V3*/
directionsDisplay = new google.maps.DirectionsRenderer();
var npcc = new google.maps.LatLng(39.868041, -86.145084);
var mapOptions = {
zoom : 17,
center : npcc,
mapTypeId : google.maps.MapTypeId.HYBRID,
backgroundColor:'#333'
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('directions-panel'));
var marker = new google.maps.Marker({
position: mapOptions.center,
map: map,
title: 'My initial starting point'
});
//remove all unnecessary styles from Google Maps v3
setTimeout(function(){$('base').prevAll().remove();}, 1000);
/**/
}
function calcRoute() {
/*CALCULATE AND DISPLAY ROUTE DATA*/
var from = $('#from').val();
var to = '6202 N Carrollton Ave, Indianapolis';
var directionsRequest = {
origin: from,
destination: to,
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
};
directionsService.route(directionsRequest, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
else {
console.log("Unable to retrieve your route<br />");
}
});
/**/
}
function getRoute() {
/*ON HTML FORM SUBMIT, PROCESS ROUTE DATA*/
$('#coming-from').submit(function(e){
e.preventDefault();
calcRoute();
});
/**/
}
google.maps.event.addDomListener(window, 'load', initialize);
$(window).load(function(){
getRoute();
});
var方向显示;
var directionsService=new google.maps.directionsService();
var映射;
函数初始化(){
/*初始化谷歌地图V3*/
directionsDisplay=new google.maps.DirectionsRenderer();
var npcc=new google.maps.LatLng(39.868041,-86.145084);
变量映射选项={
缩放:17,
中心:全国政协,,
mapTypeId:google.maps.mapTypeId.HYBRID,
背景颜色:“#333”
};
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
方向显示.setMap(地图);
directions display.setPanel(document.getElementById('directions-panel');
var marker=new google.maps.marker({
位置:mapOptions.center,
地图:地图,
标题:“我最初的出发点”
});
//从Google Maps v3中删除所有不必要的样式
setTimeout(函数(){$('base').prevAll().remove();},1000);
/**/
}
函数calcRoute(){
/*计算并显示路线数据*/
var-from=$('#from').val();
var to=‘印第安纳波利斯卡罗尔顿大道北6202号’;
变量方向请求={
出处:从,,
目的地:至,
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC
};
路由(DirectionRequest,函数(响应,状态){
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
}
否则{
console.log(“无法检索您的路由
”);
}
});
/**/
}
函数getRoute(){
/*在HTML表单提交中,处理路由数据*/
$(“#来自”).submit(函数(e){
e、 预防默认值();
calcRoute();
});
/**/
}
google.maps.event.addDomListener(窗口“加载”,初始化);
$(窗口).load(函数(){
getRoute();
});
重构代码。仅在页面加载时初始化映射(并加载API),将方向调用放入一个函数中,当您希望提交一组新的方向时,将调用该函数。