Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “地图API”中的信息窗口的往返方向_Javascript_Google Maps_Google Maps Api 3_Google Maps Markers_Infowindow - Fatal编程技术网

Javascript “地图API”中的信息窗口的往返方向

Javascript “地图API”中的信息窗口的往返方向,javascript,google-maps,google-maps-api-3,google-maps-markers,infowindow,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,Infowindow,我正试图在谷歌地图上复制类似的功能,你可以右键点击,它提供了一个选项,让你可以知道从那个点到那个点的方向。我所面临的困难是与信息窗口进行交互&将lat/long返回 监听器可以很好地创建信息窗口。但我可以;我不知道如何将lat/long返回到javascript中(作为起点或终点),这样我就可以在directions服务中使用它了。我最终会有第二个标记,它将填充origin/destination中的其他值。一旦数组有两个值,我将调用directions服务 我看到的所有示例都需要某种形式的手动

我正试图在谷歌地图上复制类似的功能,你可以右键点击,它提供了一个选项,让你可以知道从那个点到那个点的方向。我所面临的困难是与信息窗口进行交互&将lat/long返回

监听器可以很好地创建信息窗口。但我可以;我不知道如何将lat/long返回到javascript中(作为起点或终点),这样我就可以在directions服务中使用它了。我最终会有第二个标记,它将填充origin/destination中的其他值。一旦数组有两个值,我将调用directions服务

我看到的所有示例都需要某种形式的手动输入来定义地址的第二部分

我对这个还很陌生,所以请对我宽容一点;我已经尽力提供了最精简的示例代码来演示我的问题

var mapCanvas=“映射画布”,
地图
infowindow=新建google.maps.infowindow(),
位置arr=[],
o;
google.maps.event.addDomListener(窗口,“加载”,函数(){
map=new google.maps.map(document.getElementById(mapCanvas),{zoom:13,中间:{lat:53.4723272,lng:-2.2935022}});
var geocoder=new google.maps.geocoder;
google.maps.event.addListener(映射,“单击”,函数(o){
位置角推(o.latLng);
var a=新的google.maps.Marker({
职位:o.latLng,
地图:地图,
});
var content=“”
+ ""
infowindow.setContent(content);
信息窗口。打开(地图,a);
});
});
函数DirFromHere(LocationArr){
控制台日志(位置arr.长度);
}
函数DirToHere(LocationArr){
位置arr=[];
}
html,正文{
身高:100%;
宽度:100%;
}
#地图画布{
位置:绝对位置;
最高:0%;
左:0%;
宽度:100%;
身高:100%;
}

下面是一个简单的示例,说明了如何做到这一点,只使用普通的Javascript。代码被注释。这应该足以理解它是如何工作的

var方向显示;
var directionsService=new google.maps.directionsService();
var映射,信息窗口;
var开始、结束、pos;
函数初始化(){
directionsDisplay=new google.maps.DirectionsRenderer();
//地图选项
var center=newgoogle.maps.LatLng(45.07,7.67);
变量myOptions={
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:中心
}
//创建地图
map=new google.maps.map(document.getElementById(“地图画布”),myOptions);
方向显示.setMap(地图);
//创建信息窗口
infowindow=新建google.maps.infowindow({
内容:“”,
地图:地图
});
//听地图点击
google.maps.event.addListener(映射,'click',函数(e){
//保存当前位置
pos=e.latLng;
//设置信息窗口位置并打开
信息窗口。设置位置(pos);
infowindow.open(地图)
});
//创建信息窗口按钮
让btnFrom=document.createElement(“按钮”);
btnFrom.id='directionsFrom';
btnFrom.innerHTML='此处的方向'
设btnTo=document.createElement(“按钮”);
btnTo.id='directionsTo';
btnTo.innerHTML='此处的方向'
//将DOM侦听器添加到“来自方向”按钮
google.maps.event.addDomListener(btnFrom'click',function(){
//设置起始位置
开始=位置;
});
//将DOM侦听器添加到“指向”按钮
google.maps.event.addDomListener(btnTo,'click',function(){
//设定结束位置
结束=位置;
//检查起点和终点位置是否都是车床的实例
if((google.maps.LatLng的开始实例)和&(google.maps.LatLng的结束实例)){
//我们有一个起点和终点位置,所以我们可以请求指示
getDirections();
}
});
//在DIV中添加两个按钮
让contentDiv=document.createElement('div');
contentDiv.appendChild(btnFrom);
contentDiv.appendChild(btnTo);
//添加DIV作为信息窗口内容
infowindow.setContent(contentDiv);
}
//提出方向请求并在地图上显示
函数getDirections(){
var方法=‘驱动’;
var请求={
来源:start,
目的地:完,
travelMode:google.maps.DirectionsTravelMode[方法]
};
路由(请求、功能(响应、状态){
if(status==google.maps.directionstatus.OK){
方向显示。设置方向(响应);
//关闭信息窗口
infowindow.close();
}
});
}
初始化()
#地图画布{
高度:150像素;
}


类似于?这是我见过的最接近的例子,但不完全是;这仍然需要手动输入。另外,我不确定当你按下链接时,它是如何导出lat&long的。最后,我不知道为什么我总是被否决。问题还不够清楚吗?运行代码段会生成脚本错误。您是否也观察了javascript控制台以查找其他错误?此外,您的问题还不清楚您的问题是什么,以及您希望它如何工作。提供的代码不包含方向请求的实现。这应该什么时候发生?接下来是什么行动?把你的问题弄清楚,让你的代码反映出你所说的你想做的事情。这也可能会阻止人们否决投票。我认为脚本错误是因为我忽略了我的maps API键?在这个阶段,我对方向服务端的事情没有意见,因此为什么省略了它。我将仔细阅读下面的答案,看看我进展如何。谢谢你的帮助和反馈。是的,很抱歉,这个脚本错误看起来无论如何都会出现。不知道为什么。无论如何,你有一个工作的例子,你可以检查现在和适应你的需要。