私はここでスタックオーバーフローを初めて使用しています。現在、iOS の UIWebView に統合されたGoogle マップ API V3を使用しています。これは、iOS デバイスの GPS によって提供される場所で 2 秒ごとに更新されるGPS アプリとして機能します。基本的に、現在地から目的地までの道順を表示します (テキストフィールドに目的地を入力して、Google マップに渡すことができます)。
私が直面している問題は、車を運転している間、ルートを再計算し続けていることです.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>";
}
});
}