保持路线相同并仅在google maps api v3中更改当前位置标记

时间:2013-03-15 07:38:39

标签: ios google-maps-api-3 uiwebview gps

我是关于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>";



                            }
                            });

}

1 个答案:

答案 0 :(得分:0)

路线已更改,因为您每隔2秒拨打directionService.route() 如果您只想更新当前位置。然后不要叫那条路线()!