向谷歌地图传递纬度和经度.需要有人帮我修改代码
passing latitude and longitude to google maps. Need someone to help me correct my code
我尝试了以下方法来传递时间和长度到谷歌地图,以便我应该能够打开地图并在地图上找到我当前的位置。当我运行这段代码时,只显示Google地图符号而没有地图。
var lat= function latitu(){
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
var element = '' + position.coords.latitude + '' ;
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + ''n' +
'message: ' + error.message + ''n');
}
}
var lon = function longitu(){
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
var element= '' + position.coords.longitude + '' ;
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + ''n' +
'message: ' + error.message + ''n');
}
}
var map;
function initialize() {
var mapDiv = document.getElementById('map-canvas');
map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(lat,lon ),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);
}
function addMarkers() {
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var latLng = new google.maps.LatLng(lat,lon);
var marker = new google.maps.Marker({
position: latLng,
map: map
});
}
google.maps.event.addDomListener(window, 'load', initialize);
没有得到地图的原因是没有中心坐标。lat
和lon
变量不包含纬度和经度,它们包含用于获取坐标的函数的函数引用。因为函数从来没有被调用过,所以没有坐标。
这不能简单地通过调用函数来修复,因为函数不返回坐标,它们只是开始获取坐标的过程,并立即返回undefined
的返回值。一旦成功回调被调用,坐标将被放入一个变量并被遗忘。
你应该首先获得坐标,当它们到达时,你可以开始设置地图。您当前的代码正在等待deviceready
事件获取坐标(或者如果调用了这些函数,它将获得坐标),并等待load
事件设置地图。因为你不知道事件发生的时间,所以你可以在没有任何坐标之前设置地图。一旦坐标到达,调用设置地图的函数,在该函数中,您可以检查元素是否已加载,并在需要时使用load
事件。
您有两个函数用于获取坐标,但您不需要分别获取经纬度。
下面的代码用于获取坐标,然后设置地图:
document.addEventListener("deviceready", onDeviceReady, false);
// Cordova is ready
//
function onDeviceReady() {
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
function onSuccess(position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
initialize(lat, lon);
}
// onError Callback receives a PositionError object
//
function onError(error) {
alert('code: ' + error.code + ''n' +
'message: ' + error.message + ''n');
}
var map;
function initialize(lat, lon) {
var mapDiv = document.getElementById('map-canvas');
// check if the element exists
if (mapDiv == null) {
// if not, wait until it does
google.maps.event.addDomListener(window, 'load', function(){
initialize(lat, lon);
});
} else {
map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(lat, lon),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
addMarkers(lat, lon);
});
}
}
function addMarkers(lat, lon) {
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var latLng = new google.maps.LatLng(lat, lon);
var marker = new google.maps.Marker({
position: latLng,
map: map
});
}
演示(不包含devideready
事件):http://jsfiddle.net/Guffa/bTP2a/
相关文章:
- 试图修改此javascript代码以减小弹出窗口的大小,或者在用户单击框外时关闭
- 用于修改文档元素的 PHP 代码
- 修改此node.js代码以输出.wav而不是.mp4
- 如何修改代码以将其应用于三个下拉列表?(Jquery)
- Javascript代码修改..简单错误
- 无法修改Controls集合,因为控件包含代码块(即<%.%>).无法更正此错误
- 将获取.data的jquery代码修改为javascript代码
- 修改javascript代码chrome dev工具
- 如何修改此JavaScript代码以防止无限放大
- node.js中的自修改代码可以集群工作
- 无法修改控件集合,因为控件包含代码块(即<%.%>)
- 为新手修改Javascript代码
- Polymer:当数组中的对象被外部代码修改时,更新dom重复元素
- 修改 jQuery 和 PHP 代码,将 ID 和文本值拉取到 OPTION 元素中
- 如何修改此代码,以便创建数组并将事件添加到数组中
- PhoneGap/Cordova没有监听401,将http响应代码修改为200不起作用
- Jquery代码修改表单提交的参数
- 使用Java代码修改HTML字段
- 通过javascript代码修改服务器文件
- 解析云代码-修改所有PFUsers