【问题标题】:Google maps API v3: Can not call method 'lat' of nullGoogle 地图 API v3:无法调用 null 的方法“lat”
【发布时间】:2013-12-09 21:55:58
【问题描述】:

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

<!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>

当我在 Google Chrome 上打开它时,它运行良好,并显示了我的位置。

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

“未捕获的类型错误:无法在 file:///mnt/sdcard/myloction.html:12 处调用 null 的方法 'lat'”

(我已将mylocation.html 保存在 SDCard 中)。

我不确定如何解决这个问题?有人可以指导我吗?

【问题讨论】:

  • 这很可能是这里的错字mapOptions)n); ?
  • 使用 FireFox 后,我在拒绝分享我的位置后得到了空白屏幕。 Chrome 显示您的位置并显示错误消息 Error: The Geolocation service failed.,这没关系。

标签: google-maps-api-3 android-webview


【解决方案1】:

要在 WebView 中访问 Geolocation,您需要先进行一些设置。

您首先必须在 WebSettings 中启用该功能:http://developer.android.com/reference/android/webkit/WebSettings.html#setGeolocationEnabled(boolean)

您还必须实现 WebChromeClient.onGeolocationPermissionsShowPrompt: http://developer.android.com/reference/android/webkit/WebChromeClient.html#onGeolocationPermissionsShowPrompt(java.lang.String, android.webkit.GeolocationPermissions.Callback)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多