0

我是 stackoverflow 的新手,我目前正在使用集成在 iOS 的 UIWebView 中的谷歌地图 API V3 。它作为一个GPS 应用程序工作,每 2 秒在 ios 设备的 GPS 提供的位置上更新一次。所以基本上它显示了从你现在所在的地方到你要去的地方的方向(你可以将目的地放在文本字段中并将其传递给谷歌地图)。

我面临的问题是,当我使用它驾驶我的汽车时,它会不断重新计算路线,我希望它保持在从 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>";



                            }
                            });

}
4

1 回答 1

0

directionService.route() 如果您只想更新当前位置,则路线已更改,因为您每 2 秒调用一次。然后不要调用该路由()!

于 2013-03-15T11:50:58.897 回答