谷歌地图科尔多瓦地理定位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_COMMANDS
,
android.permission.ACCESS_FINE_LOCATION
和 android.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 设备上不起作用