Javascript 地理定位Phonegap Android不工作
我已经尽了一切努力在我的模拟器(Target2.2)上实现地理定位,我使用了telnet并发布了一个“地理定位”,后跟经度和纬度。我已经编辑了我的安卓清单以获得许可,但我不确定为什么它不会显示以我所在位置为中心的谷歌地图。如果我在地图的setcentered函数中输入任何坐标,但当我输入坐标时,它不会显示。 这是我已经检查了几个小时的代码:Javascript 地理定位Phonegap Android不工作,javascript,android,cordova,maps,Javascript,Android,Cordova,Maps,我已经尽了一切努力在我的模拟器(Target2.2)上实现地理定位,我使用了telnet并发布了一个“地理定位”,后跟经度和纬度。我已经编辑了我的安卓清单以获得许可,但我不确定为什么它不会显示以我所在位置为中心的谷歌地图。如果我在地图的setcentered函数中输入任何坐标,但当我输入坐标时,它不会显示。 这是我已经检查了几个小时的代码: <!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict// "http://www.w3.org/TR/xhtml1
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Maps JavaScript API Example</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=AIzaSyBrnId8UIeAeDTMr2sVi-g86izgdb2KhVo&sensor=true"
type="text/javascript"></script>
<script type="text/javascript">
// Wait for PhoneGap to load
// PhoneGap is ready
document.addEventListener("deviceready", onDeviceReady, false);
navigator.geolocation.getCurrentPosition(geolocationSuccess, [maximumAge: 3000, timeout: 5000, enableHighAccuracy:
<!--position.coords.latitude-->
initialize()
(GBrowserIsCompatible())
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(position.coords.latitude,position.coords.longitude), 13)
map.setUIToDefault();
// Add 10 markers to the map at random locations
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
}
}
</script>
</head>
<body onload="initialize()" onunload="GUnload()">
<div id="map_canvas" style="width: 500px; height: 300px"></div>
</body>
</html>
以下是我的一些快速观察结果。您似乎没有定义在PhoneGap初始化时将被调用的onDeviceReady函数。下面是PhoneGap示例代码的副本,展示了如何从中使用onDeviceReady
您是否看到这段代码如何定义一个名为ondevicerady
的函数,其中的注释表示PhoneGap方法可以安全调用
您似乎也没有加载PhoneGap JavaScript
/*在此处输入代码*/函数句柄\u错误(错误)
{
开关(错误代码)
{
案例错误。权限被拒绝:警报(“用户未共享地理位置数据”);
打破
case error.POSITION_不可用:警报(“无法检测当前位置”);
打破
case error.TIMEOUT:警报(“检索位置timedout”);
打破
默认值:警报(“未知错误”);
打破
}
}
函数句柄\地理位置\查询(位置){
var text=“Latitude:“+position.coords.Latitude+”
“+
“经度:“+position.coords.Longitude+”
“+
“精度:“+position.coords.accurity+”m
“+
“时间:”+新日期(位置时间戳);
//$(“#info”).html(文本);
//警报(文本);
var image_url='';
图像_url=”http://maps.google.com/maps/api/staticmap?path=color:0x0000ff|重量:5 | 40.737102,-73.990318 | 40.749825,-73.987963&缩放=14&尺寸=260x300&传感器=真”;
$(“#info”).slideUp('slow');
$(“地图”).slideDown('slow');
$('#map').html('');
}
/*在这里输入代码*/
/*在这里输入代码*/
/*在此处输入代码*/$(“#btnInit”).live('click',函数(事件){
$(“#map”).slideUp('slow');
$(“#info”).slideDown('slow');
$('#markmaptype').val(1);
启动_watchlocation();
});
使用此代码,它对我有效此外,加载PhoneGap JavaScript的脚本HTML标记需要使用正确的JavaScript文件名。此名称取决于您正在使用的PhoneGap的版本。您丢失了一大块
<!DOCTYPE html>
<html>
<head>
<title>PhoneGap Device Ready Example</title>
<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8">
// Call onDeviceReady when PhoneGap is loaded.
//
// At this point, the document has loaded but phonegap-1.0.0.js has not.
// When PhoneGap is loaded and talking with the native device,
// it will call the event `deviceready`.
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap is loaded and it is now safe to make calls PhoneGap methods
//
function onDeviceReady() {
// Now safe to use the PhoneGap API
}
</script>
</head>
<body>
</body>
</html>
<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript">
// Wait for PhoneGap to load
// PhoneGap is ready
document.addEventListener("deviceready", onDeviceReady, false);
<!--position.coords.latitude-->
function onDeviceReady() {
if (GBrowserIsCompatible()) {
navigator.geolocation.getCurrentPosition(geolocationSuccess, [maximumAge: 3000, timeout: 5000, enableHighAccuracy: // some code is missing here!
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(position.coords.latitude,position.coords.longitude), 13)
map.setUIToDefault();
// Add 10 markers to the map at random locations
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
} else {
// add code here to display error that device is not compatible
}
}
</script>
</head>
<body onunload="GUnload()">
/*enter code here*/ function handle_errors(error)
{
switch(error.code)
{
case error.PERMISSION_DENIED: alert("user did not share geolocation data");
break;
case error.POSITION_UNAVAILABLE: alert("could not detect current position");
break;
case error.TIMEOUT: alert("retrieving position timedout");
break;
default: alert("unknown error");
break;
}
}
function handle_geolocation_query(position) {
var text = "Latitude: " + position.coords.latitude + "<br/>" +
"Longitude: " + position.coords.longitude + "<br/>" +
"Accuracy: " + position.coords.accuracy + "m<br/>" +
"Time: " + new Date(position.timestamp);
//$("#info").html(text);
// alert(text);
var image_url ='';
image_url = "http://maps.google.com/maps/api/staticmap?path=color:0x0000ff|weight:5|40.737102,-73.990318|40.749825,-73.987963&zoom=14&size=260x300&sensor=true";
$("#info").slideUp('slow');
$("#map").slideDown('slow');
$('#map').html('<img src="'+image_url+'" />');
}
/*enter code here*/<a class="request_appoint_ment" href="javascript:void(0);" data-transition="none" id="btnInit">Mark Vehicle Location</a>
/*enter code here*/<div id="info" style="display:none;"><img src="images/ajax-loader.gif" style="padding:50px 0 50px 100px;" /></div>
<div id="map" style="display:none; padding-bottom:20px;"></div>
/*enter code here*/$( '#btnInit' ).live( 'click',function(event){
$("#map").slideUp('slow');
$("#info").slideDown('slow');
$('#markmaptype').val(1);
initiate_watchlocation();
});