我也遇到了同样的问题,我查看了下源码解决了,主要代码如下:
//启用数据库
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端 的 百度地图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)