使用百度地图,定位当前所在城市,发现在浏览器中,定位很快,但是把html页面放到webview中,就一直定位不到坐标function getCurPosition() {
var error_msg ;
var geolocation = new BMap.Geolocation();
var gc = new BMap.Geocoder();
geolocation.getCurrentPosition(function(r) { // 定位结果对象会传递给r变量
if (this.getStatus() == BMAP_STATUS_SUCCESS) { // 通过Geolocation类的getStatus()可以判断是否成功定位。
var pt = r.point;
gc.getLocation(pt, function(rs) {
var addComp = rs.addressComponents;
var address = addComp.city;
alert(address);
});
} else {
switch (this.getStatus()) {
case 2:
error_msg = '位置结果未知 获取位置失败.';
break;
case 3:
error_msg = '导航结果未知 获取位置失败.';
break;
case 4:
error_msg = '非法密钥 获取位置失败.';
break;
case 5:
error_msg = '对不起,非法请求位置 获取位置失败.';
break;
case 6:
error_msg = '对不起,当前 没有权限 获取位置失败.';
break;
case 7:
error_msg = '对不起,服务不可用 获取位置失败.';
break;
case 8:
error_msg = '对不起,请求超时 获取位置失败.';
break;
default:
error_msg = '对不起,无法获取位置.';
break;
}
layer.closeAll();
layer.open({
content: error_msg,
className: 'layer-msg',
time: 2
});
}
}, function(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
error_msg = "用户拒绝对获取地理位置,"
break;
case error.POSITION_UNAVAILABLE:
error_msg = "位置信息是不可用,"
break;
case error.TIMEOUT:
error_msg = "请求定位超时,"
break;
case error.UNKNOWN_ERROR:
error_msg = "未知错误,"
break;
default :
break;
}
layer.closeAll();
layer.open({
content: error_msg+"请手动选择城市。",
className: 'layer-msg',
time: 2
});
}, {
timeout : 3000,
enableHighAccuracy : true,
maximumAge : 10000
});
}
后来发现,原来要使webview支持html5定位,需要安卓在调用webview前加几行代码,如下:
必须启用数据库(可以安卓本地创建数据库)