【问题标题】:Keep route same and change current location marker only in google maps api v3仅在 google maps api v3 中保持路线相同并更改当前位置标记
【发布时间】:2013-03-03 20:26:18
【问题描述】:

我是 stackoverflow 的新手, 我目前正在使用集成在 iOS 的 UIWebView 中的 google map 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>";



                            }
                            });

}

【问题讨论】:

  • 你是否每 2 秒调用一次初始化?
  • 嗨,不,我只是一次,然后我只是每 2 秒调用一次函数 calcAsyncRoute(mylatoo,mylongo)

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


【解决方案1】:

路由改变了,因为你每 2 秒调用一次 directionService.route() 如果您只想更新当前位置。然后不要调用那个 route()!

【讨论】:

  • 嗨亚历克斯,好的,我做到了,实际上我以为我需要每两秒一个新路线,你知道,因为设备会连续移动。我移动了 directionService.route() 来初始化 func,现在只是改变了标记位置。
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 2012-01-28
  • 2011-02-25
  • 2016-11-06
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-06-19
相关资源
最近更新 更多