这适用于Safari
上的Mac OS X
,以及Chrome
和Mac OS X
上的Android
。
但是它在Safari
上的iOS
上失败(在iPhone 8
和iPad
上都进行了测试)。
if (navigator.geolocation) {
alert('geolocation OK');
navigator.geolocation.getCurrentPosition(function(position) {
alert('getCurrentPosition OK');
BaseLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
initMap();
});
}
我收到警报geolocation OK
,但是第二个getCurrentPosition OK
没有显示在iOS
上,并且从未调用过initMap
。
如何调试,我没有USB电缆连接我的iPhone
或iPad
。
答案 0 :(得分:0)
我知道这是一篇旧帖子,但我们在 iOS Safari 的 navigator.geolocation.getCurrentPosition()
模式下使用 standalone
时遇到了一些重大问题。
我发布了一个更全面的答案 here,但我们最终代码的一般要点是:
export function getUserPosition(): Promise<GeolocationPosition> {
const promiseArray = [];
if (navigator.standalone) {
promiseArray.push(
new Promise((resolve, reject) => {
const wait = setTimeout(() => {
clearTimeout(wait);
reject('Location has timed out');
}, 4000);
})
);
}
const getCurrentPositionPromise = new Promise((resolve, reject) => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(resolve, reject, {
timeout: 5000,
maximumAge: 2000,
enableHighAccuracy: true,
});
} else {
reject(new Error('Browser does not support geolocation!'));
}
});
promiseArray.push(getCurrentPositionPromise);
return Promise.race(promiseArray) as Promise<GeolocationPosition>;
}