如何使导航器地理定位功能合理化?

时间:2019-04-21 09:05:52

标签: asynchronous es6-promise navigator

我需要简化这一行代码:

navigator.geolocation.getCurrentPosition(setPosition);

因为它的结果是异步的。

我尝试过:

await new Promise (resolve => navigator.geolocation.getCurrentPosition(
  () => setPosition().then(resolve))
)

但是不起作用...

我之前的代码是这样的:

const setPosition = async (position) => {
  const lat = await position.coords.latitude
  const lng = await position.coords.longitude
  mapOptions.center = {
    lat: lng,
    lng: lat
  }      
}

navigator.geolocation.getCurrentPosition(setPosition);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用打字稿,一种可能的解决方案是

   const getLocation = (options: GeoOptions) => {
      return new Promise((resolve, reject) => {
         Geolocation.getCurrentPosition(resolve, reject, options);
      });
   }

   type GeoOptions = {
      timeout?: number;
      maximumAge?: number;
      enableHighAccuracy?: boolean;
      distanceFilter?: number;
      useSignificantChanges?: boolean;
   };