0

我正在构建一个将跟踪用户位置的网络应用程序。我想让它变得健壮,例如,当用户失去互联网连接时,应用程序将继续跟踪用户的位置(据我所知,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 对象添加到数组中。

当重新发现 Internet 连接时,将运行此代码:

 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上查看。如果您向下滚动一次,您可以开始跟踪。

4

1 回答 1

1

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

改变:

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

到:

  for (var i = (offlineMarkersArray.length-1); i >= 0; i--) {
于 2012-11-05T16:56:20.183 回答