今天扣丁学堂Android培训老师给大家详细介绍一下关于WebView从assets中加载html5页面,实现地理位置定位的方法,但是有一个html5页面的定位问题,发现在手机浏览器上html5是可以实现定位的,但是在webview中就无法定位了,以为html5的地理定位在webview中不可行,下面我们一起来看一下是如何实现的吧。
html5页面内容如下:
点击这个按钮,获得您的坐标:
试一下
varx=document.getElementById("demo");
functiongetLocation()
{
if(navigator.geolocation)
{
navigator.geolocation.watchPosition(showPosition);
}
else{
x.innerHTML="Geolocationisnotsupportedbythisbrowser.";
}
}
functionshowPosition(position)
{
x.innerHTML="Latitude:"+position.coords.latitude+
"
Longitude:"+position.coords.longitude;
}
后来又在网上查了查,发现,需要设置一些东西。设置websetting的属性:
webView.setWebViewClient(newWebViewClient());
//webView.loadUrl("http://news.baidu.com/");
webView.loadUrl("file:///android_asset/index.html");
WebSettingswebSettings=webView.getSettings();
webSettings.setJavaScriptEnabled(true);
/**
*以下部分可以不要
*/
////启用数据库
//webSettings.setDatabaseEnabled(true);
//Stringdir=this.getApplicationContext().getDir("database",Context.MODE_PRIVATE).getPath();
//
////启用地理定位
//webSettings.setGeolocationEnabled(true);
////设置定位的数据库路径
//webSettings.setGeolocationDatabasePath(dir);
/**
*此处很重要,必须要
*/
//***最重要的方法,一定要设置,这就是出不来的主要原因
webSettings.setDomStorageEnabled(true);
webView.setWebChromeClient(newWebChromeClient(){
//配置权限(同样在WebChromeClient中实现)
@Override
publicvoidonGeolocationPermissionsShowPrompt(Stringorigin,
Callbackcallback){
callback.invoke(origin,true,false);
super.onGeolocationPermissionsShowPrompt(origin,callback);
}
});
//在Androidmanifest.xml中开启权限
在某些限制应用定位权限的手机中,需要开启应用的定位权限,否则会定位失败
问题解决!
特别试了试:
同时打开网络和GPS可以定位,获得的是经纬度信息。
只打开网络可以定位,只打开GPS也可以定位。
关闭网络和GPS也可以定位。
由此可见,是由地理位置定位所得,只能获得经纬度信息。
若要获得详细的地址信息,需要调用地图API实现。
以上这篇Android中WebView控件支持地理位置定位方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持扣丁学堂。
网友评论