Google maps api 3 谷歌地图API v3:无法调用方法';纬度';空的

Google maps api 3 谷歌地图API v3:无法调用方法';纬度';空的,google-maps-api-3,android-webview,Google Maps Api 3,Android Webview,我正在使用Google maps API v3,这是我的HTML文件(mylocation.HTML): Mylocation html,正文,#地图画布{ 身高:100%; 边际:0px; 填充:0px; } var映射; 函数初始化(){ var mapOptions={zoom:6}; map=new google.maps.map(document.getElementById('map-canvas'), (b)n); if(导航器.地理位置){ navigator.geolocat

我正在使用Google maps API v3,这是我的HTML文件(mylocation.HTML):


Mylocation
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px;
}
var映射;
函数初始化(){
var mapOptions={zoom:6};
map=new google.maps.map(document.getElementById('map-canvas'),
(b)n);
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
var pos=新的google.maps.LatLng(position.coords.latitude,
位置坐标经度);
var infowindow=new google.maps.infowindow({
地图:地图,
职位:pos,,
内容:“使用HTML5找到的位置。”
});
地图设置中心(pos);
},函数(){
手持导航(真);
});
}否则{
//浏览器不支持地理位置
手动定位(假);
}
}
函数handleNogeLocation(errorFlag){
如果(错误标志){
var content='错误:地理位置服务失败';
}否则{
var content='错误:您的浏览器不支持地理位置';
}
变量选项={
地图:地图,
职位:新google.maps.LatLng(60105),
内容:内容
};
var infowindow=new google.maps.infowindow(选项);
地图设置中心(选项位置);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
当我在谷歌浏览器上打开它时,它工作正常,并显示我的位置

在我的项目中,我使用
WebVew
在Android上显示这个HTML文件。但是当我运行它时,在
LogCat
中,我得到以下错误:

未捕获的TypeError:无法在调用null的方法'lat'file:///mnt/sdcard/myloction.html:12"

(我已将
mylocation.html
保存在SD卡中)


我不知道怎么解决这个问题?有人能给我介绍一下吗?

要在WebView中访问地理位置,您需要先进行一些设置

首先必须在WebSettings中启用该功能:

您还必须实现WebChromeClient.onGeolocationPermissionsShowPrompt:


另外,请确保您的应用程序具有访问位置的适当Android权限。

这很可能是这里的打字错误
mapOptions)n)?在FireFox上,我拒绝分享我的位置后,屏幕上一片空白。Chrome显示您的位置,并显示错误消息
错误:地理定位服务失败。
正常。
<!DOCTYPE html>
<html>
<head>
    <title>Mylocation</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
        html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script>

    <script>
        var map;
        function initialize() {
            var mapOptions = {zoom: 6};

            map = new google.maps.Map(document.getElementById('map-canvas'),
                mapOptions)n);

            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function  (position) {
                    var pos = new google.maps.LatLng(position.coords.latitude,
                        position.coords.longitude);

                    var infowindow = new google.maps.InfoWindow({
                        map: map,
                        position: pos,
                        content: 'Location found using HTML5.'
                    });

                    map.setCenter(pos);
                }, function () {
                    handleNoGeolocation(true);
                });
            } else {
            // Browser doesn't support Geolocation
                handleNoGeolocation(false);
            }
        }

        function handleNoGeolocation(errorFlag) {
            if (errorFlag) {
                var content = 'Error: The Geolocation service failed.';
            } else {
                var content = 'Error: Your browser doesn\'t support geolocation.';
            }
            var options = {
                map: map,
                position: new google.maps.LatLng(60, 105),
                content: content
            };
            var infowindow = new google.maps.InfoWindow(options);
            map.setCenter(options.position);
        }
        google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
    <div id="map-canvas"></div>
</body>
</html>