谷歌地图科尔多瓦地理定位API不起作用

Posted

技术标签:

【中文标题】谷歌地图科尔多瓦地理定位API不起作用【英文标题】:Google maps cordova geolocation api not working 【发布时间】:2014-06-16 12:32:22 【问题描述】:

我目前正在开发一个 api 项目,我必须添加地理定位 api,但它不起作用。当我在浏览器(Chrome)上打开 .html 文件时,它可以正常工作(它没有显示实际的地图,但它变灰并显示缩放按钮和所有内容),但是当我运行模拟器时(通过 Eclipse)在我的三星 S4 上,它根本没有显示任何内容。

在我的 androidManifest 文件中,我添加了android.permission.ACCESS_LOCATION_EXTRA_COMMANDSandroid.permission.ACCESS_FINE_LOCATIONandroid.permission.ACCESS_COARSE_LOCATION

如何让它在我的手机上工作并显示地图(我做错了什么)?

同样在 Eclipse 中,实际的地理定位 api 没有显示,但是当我运行命令提示符时它已经安装,当我转到 windows 资源管理器时,到 plugins 文件夹时,它显示它已安装(org.apache. cordova.geolocation),那我应该离开它吗?

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
  html  height: 100% 
  body  height: 100%; margin: 0; padding: 0 
  #map-canvas  height: 100% 
</style>
<script type="text/javascript"
  src="https://maps.googleapis.com/maps/api/js?  key=AIzaSyDxYdO_d_hBfeNihd4Ats6ox0ZTIi2I&sensor=true">
</script>
<script type="text/javascript">
var map;
var lat;
var lng;

 document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
//
function onDeviceReady() 
    navigator.geolocation.getCurrentPosition(onSuccess, onError);


// onSuccess Geolocation
//
function onSuccess(position) 
    var element = document.getElementById('geolocation');
    element.innerHTML = 'Latitude: '          + position.coords.latitude         + '<br  />' +
                        'Longitude: '         + position.coords.longitude        + '<br />' +
                        'Altitude: '          + position.coords.altitude         + '<br />' +
                        'Accuracy: '          + position.coords.accuracy         + '<br />' +
                        'Altitude Accuracy: ' + position.coords.altitudeAccuracy + '<br />' +
                        'Heading: '           + position.coords.heading          + '<br />' +
                        'Speed: '             + position.coords.speed            + '<br />' +
                        'Timestamp: '         + position.timestamp               + '<br />';


    // onError Callback receives a PositionError object
    //
    function onError(error) 
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    

    var lat = position.coords.latitude;
    var lng = position.coords.latitude;


  function initialize() 
    var mapOptions = 
      center: new google.maps.LatLng(lat, lng),
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      zoom: 8
    ;
    map = new google.maps.Map(document.getElementById("map-canvas"),
        mapOptions);
    addMarker();
    

function addMarker()   
    var marker = new google.maps.Marker(
        position: new google.maps.LatLng(-34.58, 145.25),
        title: 'Hello World',
        map: map
    );

  
  google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body onload="initialize()">
<div id="map-canvas" style="width:100%; height:100%;"></div>
</body>
</html>

【问题讨论】:

【参考方案1】:

在函数onSuccess(position)中,做的时候:

var element = document.getElementById('geolocation');

不要使用geolocation(我认为你是从文档中复制的),你应该使用你定义的id:map-canvas

【讨论】:

以上是关于谷歌地图科尔多瓦地理定位API不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 地理定位插件在 android 设备上不起作用

使用谷歌地图地理定位 api 进行准确的地理定位

使用带有 jquery 的谷歌地图地理定位 api(wifi 查找)

如何在人行横道科尔多瓦上进行地理定位

地理定位在谷歌浏览器中不起作用

科尔多瓦地理定位不准确