我是关于stackoverflow的新手, 我目前正在使用集成在iOS的UIWebView中的 google map API V3 。 它可以作为 GPS应用程序,在ios设备的GPS提供的位置每2秒更新一次。所以基本上它显示了从你现在到你去的地方的方向(你可以将目的地放在文本字段中并将其传递给谷歌地图)。
问题我面临的问题是,当我使用它驾驶我的车时,它会不断重新计算路线,我希望它保持在A到B点的路线上。但我当前的位置应该继续更新。
例如,如果我经过街道,则显示您应该向左走,然后转到目的地。
它应该做什么它应该保持在我开始旅程时设置的路径(初始化地图和设置方向),并继续仅更改当前位置的标记。方向的路线(显示为折线)应保持静止。
我已经检查了很多网站,但找不到以这种方式实现的确切功能。
我的地图代码:
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
var start ;
var end;
function initialize(mylat,mylng,jobLat,jobLng) {
var latto=mylat;
var longo=mylng;
var joblatto=jobLat;
var joblongo=jobLng;
directionsDisplay = new google.maps.DirectionsRenderer();
var chicago = new google.maps.LatLng(joblatto, joblongo);
var mapOptions = {
zoom:7,
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.TOP_left
},
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: chicago
}
document.getElementById("map_canvas").innerText="";
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
directionsDisplay.setMap(map);
document.getElementById("panel").innerText="";
//==== traffic ================
var controlDiv = document.createElement('DIV');
$(controlDiv).addClass('gmap-control-container')
.addClass('gmnoprint');
var controlUI = document.createElement('DIV');
$(controlUI).addClass('gmap-control');
$(controlUI).text('Traffic');
$(controlDiv).append(controlUI);
var trafficLayer = new google.maps.TrafficLayer();
google.maps.event.addDomListener(controlUI, 'click', function() {
if (typeof trafficLayer.getMap() == 'undefined' || trafficLayer.getMap() === null) {
$(controlUI).addClass('gmap-control-active');
trafficLayer.setMap(map);
} else {
trafficLayer.setMap(null);
$(controlUI).removeClass('gmap-control-active');
}
});
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv);
//====
directionsDisplay.setPanel(document.getElementById("panel"));
end = new google.maps.LatLng(joblatto, joblongo);
calcAsyncRoute(latto,longo);
}
请指导我保持路线静止和每2秒改变当前位置的任何方式。
**My Map code:**
function calcAsyncRoute(mylatoo,mylongo)
{
var platto=mylatoo;
var plongo=mylongo;
start = new google.maps.LatLng(platto, plongo);
var request = {
origin:start,
destination:end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}else
{
document.getElementById("panel").innerHTML="<h4 style='margin:8px; font-family:Helvetica Neue;font-size: 14px;'>Sorry, No Driving Directions Found For This Address </h4>";
}
});
}
答案 0 :(得分:0)
路线已更改,因为您每隔2秒拨打directionService.route()
如果您只想更新当前位置。然后不要叫那条路线()!