2013-12-08 49 views
2

我使用谷歌地圖API V3的,這是我的HTML文件(mylocation.html):谷歌地圖API第3版:不能調用方法「緯度」空

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

當我打開它的谷歌瀏覽器,它工作正常,並顯示我的位置。

在我的項目中,我使用WebVew在Android上顯示此HTML文件。但是,當我運行它,在LogCat,我得到以下錯誤:

"Uncaught TypeError: Cannot call method 'lat' of null at file:///mnt/sdcard/myloction.html:12"

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

我不知道如何解決這個問題?有人可以用這個指導我嗎?

+0

這是最有可能錯字只是在這裏'mapOptions)n);'? –

+0

隨着FireFox我拒絕分享我的位置後,只是空白屏幕。 Chrome顯示您的位置,並顯示錯誤消息:錯誤:地理位置服務失敗。 –

回答

2

要訪問WebView中的地理位置,您需要先進行一些設置。

你首先必須啓用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權限訪問的位置。