Google maps api 3 GoogleMapsAPI:使用setDirections引用标记

Google maps api 3 GoogleMapsAPI:使用setDirections引用标记,google-maps-api-3,Google Maps Api 3,使用Google Maps Javascript API,可以使用DirectionsService和DirectionsRenderer() 上图将在地图上显示两个标记(起点、终点),它们之间有高亮显示的路线。我需要的是对创建的每个标记的引用(以设置自定义标签、注册事件等)。在仍然使用directionsDisplay.setDirections(result)的情况下,有没有办法做到这一点?或者我需要手动创建所有内容吗?您无法(轻松/安全地)获取对标记的引用。您可以设置DirectionsR

使用Google Maps Javascript API,可以使用
DirectionsService
DirectionsRenderer
()

上图将在地图上显示两个标记(起点、终点),它们之间有高亮显示的路线。我需要的是对创建的每个标记的引用(以设置自定义标签、注册事件等)。在仍然使用directionsDisplay.setDirections(result)的情况下,有没有办法做到这一点?或者我需要手动创建所有内容吗?

您无法(轻松/安全地)获取对标记的引用。您可以设置
DirectionsRenderer
suppressMarkers
选项,然后从响应中的数据创建自己的“自定义”标记

 directionsService.route(request, function(result, status) {
  if (status == 'OK') {
    directionsDisplay.setDirections(result);
    createMarker(result.routes[0].legs[0].start_location, "A", "start marker", map, infowindow);
    var lastLeg = result.routes[0].legs.length - 1;
    createMarker(result.routes[0].legs[lastLeg].end_location, "B", "end marker", map, infowindow);
  }
});

代码片段:

函数初始化(){
const directionsService=new google.maps.directionsService();
const directionsDisplay=新建google.maps.DirectionsRenderer({
真的吗
});
var infowindow=new google.maps.infowindow();
常量映射选项={
缩放:7,
中心:新的google.maps.LatLng(37.4419,-122.1419)//一些坐标
}
const map=new google.maps.map(document.getElementById('map'),mapOptions)
directionsDisplay.setMap(地图)
常量请求={
来源:{
拉脱维亚:37.4418834,
液化天然气:-122.1430195
},//一些坐标
目的地:{
拉脱维亚:37.4529598,
液化天然气:-122.1817252
},//一些坐标
travelMode:“驾驶”
}
路由(请求、功能(结果、状态){
如果(状态=‘正常’){
方向显示。设置方向(结果);
createMarker(结果。路线[0]。支腿[0]。开始位置,“A”,“开始标记”,地图,信息窗口);
var lastLeg=result.routes[0].legs.length-1;
createMarker(结果。路由[0]。支腿[lastLeg]。结束位置,“B”,“结束标记”,地图,信息窗口);
}
})
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//将标记添加到地图中。
函数createMarker(位置、标签、内容、地图、信息窗口){
var marker=new google.maps.marker({
位置:位置,,
标签:标签,
标题:标签,
地图:地图
});
marker.addListener('click',函数(e){
infowindow.setContent(content);
打开(地图,这个);
})
}
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}

您无法(轻松/安全地)获取对标记的引用。您可以设置
DirectionsRenderer
suppressMarkers
选项,然后从响应中的数据创建自己的“自定义”标记

 directionsService.route(request, function(result, status) {
  if (status == 'OK') {
    directionsDisplay.setDirections(result);
    createMarker(result.routes[0].legs[0].start_location, "A", "start marker", map, infowindow);
    var lastLeg = result.routes[0].legs.length - 1;
    createMarker(result.routes[0].legs[lastLeg].end_location, "B", "end marker", map, infowindow);
  }
});

代码片段:

函数初始化(){
const directionsService=new google.maps.directionsService();
const directionsDisplay=新建google.maps.DirectionsRenderer({
真的吗
});
var infowindow=new google.maps.infowindow();
常量映射选项={
缩放:7,
中心:新的google.maps.LatLng(37.4419,-122.1419)//一些坐标
}
const map=new google.maps.map(document.getElementById('map'),mapOptions)
directionsDisplay.setMap(地图)
常量请求={
来源:{
拉脱维亚:37.4418834,
液化天然气:-122.1430195
},//一些坐标
目的地:{
拉脱维亚:37.4529598,
液化天然气:-122.1817252
},//一些坐标
travelMode:“驾驶”
}
路由(请求、功能(结果、状态){
如果(状态=‘正常’){
方向显示。设置方向(结果);
createMarker(结果。路线[0]。支腿[0]。开始位置,“A”,“开始标记”,地图,信息窗口);
var lastLeg=result.routes[0].legs.length-1;
createMarker(结果。路由[0]。支腿[lastLeg]。结束位置,“B”,“结束标记”,地图,信息窗口);
}
})
}
google.maps.event.addDomListener(窗口“加载”,初始化);
//将标记添加到地图中。
函数createMarker(位置、标签、内容、地图、信息窗口){
var marker=new google.maps.marker({
位置:位置,,
标签:标签,
标题:标签,
地图:地图
});
marker.addListener('click',函数(e){
infowindow.setContent(content);
打开(地图,这个);
})
}
html,
身体,
#地图{
身高:100%;
宽度:100%;
边际:0px;
填充:0px
}


我认为这是不可能的,因为将此功能添加到
DirectionsRenderer
中是有可能的。您必须从@Preston中返回的
geocoded_航路点
routes
在地图上手动创建标记/多段线。您能给我发一份参考资料,说明如何从geocoded_航路点在地图上手动创建标记/多段线吗?我认为这是不可能的,因为有一种方法可以将此功能添加到
DirectionsRenderer
。您必须从@Preston中返回的
geocoded_航路点
航路
在地图上手动创建标记/多段线。您可以向我发送示例参考,说明如何从geocoded_航路点在地图上手动创建标记/多段线吗?