关于android webview里HTML5的地理位置定位,在别的浏览器中打开可以定位,在我自己的webview却不能

关于android webview里HTML5的地理位置定位,在别的浏览器中打开可以定位,在我自己的webview却不能,第1张

我也遇到了同样的问题,我查看了下源码解决了,主要代码如下:

//启用数据库

webSettingssetDatabaseEnabled(true);

String dir = thisgetApplicationContext()getDir("database", ContextMODE_PRIVATE)getPath();

//启用地理定位

webSettingssetGeolocationEnabled(true);

//设置定位的数据库路径

webSettingssetGeolocationDatabasePath(dir);

//最重要的方法,一定要设置,这就是出不来的主要原因

webSettingssetDomStorageEnabled(true)

//配置权限(同样在WebChromeClient中实现)

public void onGeolocationPermissionsShowPrompt(String origin,

GeolocationPermissionsCallback callback) {

callbackinvoke(origin, true, false);

superonGeolocationPermissionsShowPrompt(origin, callback);

}

配置权限:

<uses-permission android:name="androidpermissionACCESS_FINE_LOCATION" />

<uses-permission android:name="androidpermissionACCESS_COARSE_LOCATION" />

最近项目需要,稍微研究一下html5获取当前地理位置的问题。

获取当前位置的经纬度很简单,一句代码就搞定

[javascript] view plain copy

navigatorgeolocationgetCurrentPosition(function (position) {

longitude = positioncoordslongitude;

latitude = positioncoordslatitude;

});

然后查阅百度地图API,很easy,也是几句代码就搞定的事

[javascript] view plain copy

var map = new BMapMap("allmap");<pre name="code" class="javascript">        var point = new BMapPoint(longitude,latitude);<pre name="code" class="javascript">        var geoc = new BMapGeocoder();

[javascript] view plain copy

geocgetLocation(point, function(rs){

var addComp = rsaddressComponents;

alert(addCompprovince + ", " + addCompcity + ", " + addCompdistrict + ", " + addCompstreet + ", " + addCompstreetNumber);

});

好的,本以为到此结束,结果实际测试发现有点问题,显示的位置与我的真正位置偏差大约两三公里左右。

一开始以为是html5获取经纬度的偏差问题,然而并不是

然后开始查资料,求助强大的度娘,然后无意中发现了一个叫做 坐标转换 的东西,一搜索才知道,原来百度地图对坐标进行了深度封装,必须通过他提供的接口进行坐标转换才行

(当然了,还是因为我以前没接触过百度地图,所以不知道这点知识,常用百度地图api的应该对这个很熟悉的吧)

好了,废话不多说,上最终代码吧

[javascript] view plain copy

var map = new BMapMap("allmap");

var longitude, latitude;

navigatorgeolocationgetCurrentPosition(function (position) {

longitude = positioncoordslongitude;

latitude = positioncoordslatitude;

});

setTimeout(function () {

var gpsPoint = new BMapPoint(longitude, latitude);

BMapConvertortranslate(gpsPoint, 0, function (point) {

var geoc = new BMapGeocoder();

geocgetLocation(point, function (rs) {

var addComp = rsaddressComponents;

alert(addCompprovince + ", " + addCompcity + ", " + addCompdistrict + ", " + addCompstreet + ", " + addCompstreetNumber);

});

});

}, 3000);

这段代码依赖两个包

[html] view plain copy

<script type="text/javascript" src=">

<script type="text/javascript" src=">

百度地图提供有绘制线条和多边形、标示和覆盖物、以及提示框的API,利用他们就可以实现你问题中包含的需求,百度提供了详细的API文档和示例,一看就懂。

另外现在HTML5这个概念太泛了,很多人动不动就说这个要HTML5、那个要HTML5,其实很多时候并不知道HTML5到底是什么,以及用来干什么,所以不要想太复杂。

以上就是关于关于android webview里HTML5的地理位置定位,在别的浏览器中打开可以定位,在我自己的webview却不能全部的内容,包括:关于android webview里HTML5的地理位置定位,在别的浏览器中打开可以定位,在我自己的webview却不能、html5应用 调用百度地图API 为什么在手机端、运用html5技术 制作web端 的 百度地图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10071039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存