【问题标题】:HTML 5 geolocation POSITION UNAVAILABLE error in mobile移动设备中的 HTML 5 地理位置 POSITION UNAVAILABLE 错误
【发布时间】:2013-08-09 02:08:47
【问题描述】:

我正在尝试获取用户在移动 Web 应用程序中的当前位置 我的应用程序适用于除三星 galaksy s2 电话设备之外的所有 android 电话设备.. 它给出错误 POSITION UNAVAILABLE 错误
这是demo链接。你可以查看源代码 这是代码

navigator.geolocation.getCurrentPosition(handle_geolocation_query1, handle_errors) ;
       function handle_errors(error) {
            switch (error.code) {
                    case error.PERMISSION_DENIED: alert("user did not share geolocation data");
                        break;
                    case error.POSITION_UNAVAILABLE: alert("could not detect current position");
                        break;
                    case error.TIMEOUT: alert("retrieving position timed out");
                        break;
                    default: alert("unknown error");
                        break;
                }
            } 
       function handle_geolocation_query1(position) {



               $('#map_canvas').gmap('addMarker', {
                     'id':'m_1',
                    'position': new google.maps.LatLng(position.coords.latitude,position.coords.longitude),
                    'bounds': true,
                    'icon': 'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/geolocationmarker/images/gpsloc.png'
                }).click(function () {
           $('#map_canvas').gmap('openInfoWindow',{ 'content': '<font color="#2a2a2a" size="4">Location </font><br/><font color="#4a4a4a">Your current location</font>' }, this);
                });
                 var map = $('#map_canvas').gmap('get', 'map');
                map.setZoom(14);
                map.setCenter(new google.maps.LatLng(41.01802007732287, 28.971880674362183));
                map.setMapTypeId(google.maps.MapTypeId.ROADMAP);



            }

编辑: 我用phonegap来生成android apk文件 当我使用这个 apk 文件应用程序时,它会给出错误 POSITION UNAVAILABLE 错误,但是当我从 web 调用这个页面时它不会给出错误......这是 web link,您可以从 here 下载 apk

【问题讨论】:

  • 看起来您的代码正在按预期工作。
  • 在浏览器中可以正常工作...在许多 android 电话设备上可以正常工作..它不能在三星 galaksy s2 电话设备上工作
  • 好吧,从地理定位服务返回valid status (POSITION_UNAVAILABLE) 的意义上说,它正在工作。您是否最终确定您的三星 Galaxy SII 没有问题?尝试其他地理定位服务,看看它是否有效。
  • 在我的设备中在我的其他朋友设备中它可以工作..但在我的客户三星 galaksy s2 中它不起作用...它给出 position_unvailable 错误...我该如何解决这个问题?关闭 gps设置??

标签: html google-maps google-maps-api-3 geolocation w3c-geolocation


【解决方案1】:

您的代码在浏览器中运行良好,但在移动设备中却不行。

在检查您的源代码时,您似乎将 sensor 参数指定为 false

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

您在查看documentation 时错过了这一点。

指定传感器参数

使用 Google Maps API 要求您指明您的 应用程序正在使用传感器(例如 GPS 定位器)来确定 用户的位置。这对于移动设备尤其重要。 应用程序必须将所需的传感器参数传递给标签 包含 Maps API javascript 代码时,指示是否 您的应用正在使用传感器设备。

通过传感器确定用户位置的应用程序必须通过 加载 Maps API JavaScript 时 sensor=true。

希望你能理解。

【讨论】:

  • 我会试试这个,谢谢,但是....在浏览器中它可以工作...在许多 android 电话设备中它可以工作..它在三星 galaksy s2 电话设备上不起作用...是此参数仅适用于三星 galaksy s2 设备?
  • @user1688401 我认为没有。谷歌地图可能没有用于个人设备。检查该特定设备的 GPS。也许问题就在这里。
  • 我试过 sensor=true 但它仍然不起作用..它给出了 error.POSITION_UNAVAILABLE 错误
  • 这个答案解决了我的问题,我有一个在 Genymotion VM 上运行的 Cordova 项目。
  • 不再需要初始化谷歌地图的传感器参数:developers.google.com/maps/documentation/javascript/geolocation
【解决方案2】:

在我的设备上,我将位置模式设置为“仅限设备”。 在这种情况下,我无法获得良好的位置连接,因此无法获得位置。 我更改了我的设置>位置>模式并将其更改为高精度。 我花了很多天才让这个问题在不知不觉中解决问题出在设备本身上。我尽我最大的能力修复代码,甚至追溯到插件的代码。 请尊重我的帖子。有些人可能也有这个问题。谢谢。

【讨论】:

    【解决方案3】:

    我在使用 Messenger webview 时遇到了同样的错误,Messenger 的位置在手机设置中被拒绝,所以在允许 Messenger 应用程序的位置共享后错误得到解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多