我正在构建一个跟踪用户位置的网络应用。我想让它变得健壮,例如,当用户失去互联网连接时,应用程序将继续跟踪用户位置(据我所知,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查看该页面。如果您向下滚动一次,就可以开始跟踪。
答案 0 :(得分:1)
你想从(offlineMarkersArray.length-1)开始并倒数到0(包括0):
变化:
for (var i = offlineMarkersArray.length; i > 0; i--) {
要:
for (var i = (offlineMarkersArray.length-1); i >= 0; i--) {