在“离线”时获取和存储位置数据,然后再次在线创建标记

时间:2012-11-05 16:51:18

标签: javascript html5 google-maps google-maps-api-3

我正在构建一个跟踪用户位置的网络应用。我想让它变得健壮,例如,当用户失去互联网连接时,应用程序将继续跟踪用户位置(据我所知,GPS与互联网连接无关)。一旦应用程序再次检测到互联网连接,它将创建标记。

if (navigator.onLine == false ) {

  navigator.geolocation.getCurrentPosition(function(position){

    var newLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

    offlineMarkersArray.push(newLocation);

  }, Map.showError, {maximumAge:0.5});
}

以上代码检查是否有互联网。如果没有,则将LatLng对象添加到数组中。

重新发现互联网连接时,会运行以下代码:

 Map.addOfflineMarkers = function(){
  for (var i = offlineMarkersArray.length; i > 0; i--) {
      var location = offlineMarkersArray[i];

      var localTitle = 'Offline marker '+i;

      var localMap = Map.getMap();

      marker = new google.maps.Marker({
         position: location,
         map: localMap,
         title: localTitle,
         icon: 'http://silas-tic.com/tick.png'
      });

      markersArray.push(marker);
      offlineMarkersArray.pop();
     }
  }

据我所知,这将通过数组向后计算,创建一个标记对象,该对象通过特定图标附加到地图,以便我可以看到它。据我所知,标记对象正在创建,但它们没有被添加到地图中。

如何解决这个问题的任何想法都会非常感激!

也可以在http://silas-tic.com查看该页面。如果您向下滚动一次,就可以开始跟踪。

1 个答案:

答案 0 :(得分:1)

你想从(offlineMarkersArray.length-1)开始并倒数到0(包括0):

变化:

  for (var i = offlineMarkersArray.length; i > 0; i--) {

要:

  for (var i = (offlineMarkersArray.length-1); i >= 0; i--) {