gpt4 book ai didi

javascript - 使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置

转载 作者:行者123 更新时间:2023-11-28 07:36:19 25 4
gpt4 key购买 nike

我正在尝试重新设计一个phonegap应用程序以使用googlemaps插件和v2的google map 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
));
}

最佳答案

好的,事实证明标记变量正在创建,但没有像 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
));


}

关于javascript - 使用 PhoneGap 和 googlemaps 插件更新位置跟踪的标记位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com