我使用两个标记来获得距离A和B
Javascript:
var rendererOptions = {
draggable: true
};
var Mapa = {
// HTML Nodes
mapContainer: document.getElementById('mapa'),
dirContainer: document.getElementById('trasa'),
fromInput: document.getElementById('from-input'),
toInput: document.getElementById('to-input'),
travelModeInput: document.getElementById('travel-mode-input'),
unitInput: document.getElementById('unit-input'),
// API Objects
dirService: new google.maps.DirectionsService(rendererOptions),
dirRenderer: new google.maps.DirectionsRenderer(rendererOptions),
map: null,
showDirections: function(dirResult, dirStatus) {
if (dirStatus != google.maps.DirectionsStatus.OK) {
alert('Não há resultados!');
return;
}
// Show directions
Mapa.dirRenderer.setMap(Mapa.map);
Mapa.dirRenderer.setPanel(Mapa.dirContainer);
Mapa.dirRenderer.setDirections(dirResult);
},
getSelectedTravelMode: function() {
var value = Mapa.travelModeInput.options[Mapa.travelModeInput.selectedIndex].value
if (value == 'driving') {
value = google.maps.DirectionsTravelMode.DRIVING;
} else {
alert('Unsupported travel mode.');
}
return value;
},
getDirections: function() {
var fromStr = Mapa.fromInput.value;
var toStr = Mapa.toInput.value;
var dirRequest = {
origin: fromStr,
destination: toStr,
travelMode: Mapa.getSelectedTravelMode(),
provideRouteAlternatives: true,
};
Mapa.dirService.route(dirRequest, Mapa.showDirections);
},
init: function() {
var latLng = new google.maps.LatLng(38.6978, -27.1624);
Mapa.map = new google.maps.Map(Mapa.mapContainer, {
zoom: 15,
center: latLng,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// Show directions onload
Mapa.getDirections();
}
}
// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', Mapa.init);
我只想要第二个标记,(B)固定,不可拖动。
任何想法?
基于此:http://webhost.home.pl/piotr/google_maps_test/index.html
答案 0 :(得分:1)
我看不到你在哪里创建你的标记,但它们有一个可拖动的属性......
marker = new google.maps.Marker({
map:map,
draggable:true //Change to false for B
});
答案 1 :(得分:1)
一种选择是自己渲染方向,使其中一个标记可拖动,另一个不可拖动。缺点是您无法拖动路径来更改它(除非您自己实现;您可以在API中发布原生可拖动方向之前找到相关示例)。
working example (起始位置为绿色)
另一种选择:使用可拖动的方向,但禁止标记。使用上面示例中的标记:
var directionsDisplay = new google.maps.DirectionsRenderer({
draggable:true,
suppressMarkers: true
});