使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置
Posted
技术标签:
【中文标题】使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置【英文标题】:Updating Marker Position for Location Tracking with PhoneGap and googlemaps plugin 【发布时间】:2015-04-17 02:40:00 【问题描述】:我正在尝试重新设计 phonegap 应用以使用 googlemaps 插件和 v2 的 google maps API。
我正在努力更新标记位置,这似乎在 v3 中完美运行,但不适用于插件。
问题似乎是在调用 setMarkerPosition()
时,标记对象没有被传递给它,所以我得到“无法调用未定义的方法 setPosition”
我在脚本顶部将currentPositionMarker
设置为全局变量,虽然我在开始时在setCurrentPosition()
中定义了它,但我也尝试使用回调再次定义它,但都不起作用。
抱歉,如果它有些愚蠢,这是我的第一个 javascript 项目,因此对语言的某些部分的理解仍然非常不完整,因此非常感谢任何指针。
我正在尝试的代码...
function initializeMap()
map = plugin.google.maps.Map.getMap();
// map = new plugin.google.maps.Map(document.getElementById('map_canvas'),
// zoom: 13,
// );
function initLocationProcedure()
initializeMap();
if (navigator.geolocation)
navigator.geolocation.getCurrentPosition(
displayAndWatch,
errorCallback_highAccuracy,
maximumAge:600000, timeout:5000, enableHighAccuracy: true);
else
alert("Your Phone does not support Geolocation");
function displayAndWatch(position)
// set current position
setCurrentPosition(position);
// watch position
watchCurrentPosition();
function errorCallback_highAccuracy(position)
function watchCurrentPosition()
var positionTimer = navigator.geolocation.watchPosition(
function (position) setMarkerPosition(currentPositionMarker,position);
, error, maximumAge:600000, timeout:5000, enableHighAccuracy: true);
function error()
function setMarkerPosition(marker, position)
marker.setPosition(
new plugin.google.maps.LatLng(
position.coords.latitude,
position.coords.longitude)
);
function setCurrentPosition(pos)
currentPositionMarker = map.addMarker(
'position': new plugin.google.maps.LatLng(
pos.coords.latitude,
pos.coords.longitude
),
, function(marker)
currentPositionMarker = marker;
);
map.setCenter(new plugin.google.maps.LatLng(
pos.coords.latitude,
pos.coords.longitude
));
【问题讨论】:
您找到解决方案了吗? 是的,请看下面的答案 【参考方案1】:好的,事实证明正在创建标记变量,但没有像setCurrentPosition()
那样及时创建标记,它正在与setMarkerPosition()
异步调用设置标记。完全删除displayAndWatch()
,然后从setCurrentPosition()
的回调中调用setMarkerPosition()
似乎是解决办法。
function setCurrentPosition(pos)
map.addMarker(
'position': new plugin.google.maps.LatLng(
pos.coords.latitude,
pos.coords.longitude
),
, function(marker)
currentPositionMarker = marker;
watchCurrentPosition();
);
map.setCenter(new plugin.google.maps.LatLng(
pos.coords.latitude,
pos.coords.longitude
));
【讨论】:
以上是关于使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置的主要内容,如果未能解决你的问题,请参考以下文章
在 jquery mobile / phonegap 中重新加载外部脚本(即谷歌地图)
使用 phonegap 构建服务的插件 plugin.google.maps 在 ios 上不起作用
在 PhoneGap iOS App 中使用 Google Maps JavaScript API v3