我正在制作一个带有cordova的Android应用程序。我有一个noob问题。
我在index.html中有一张地图,当索引初始化应用程序时获取移动设备的位置,然后使用移动设备所在的标记执行地图。
代码是这样的:
var longitud;
var latitud;
function getPosition() {
var options = {
enableHighAccuracy: true,
maximumAge: 1
}
var watchID = navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
function onSuccess(position) {
this.latitud = position.coords.latitude;
this.longitud = position.coords.longitude;
navigator.geolocation.clearWatch(watchID);
mapa();
};
function onError(error) {
alert('code: ' + error.code + '\n' + 'message: ' + error.message + '\n');
}
}
function mapa() {
alert(this.latitud + ' ' + this.longitud);
document.getElementById("mapa").innerHTML = "";
map = new OpenLayers.Map("mapa");
var mapnik = new OpenLayers.Layer.OSM();
var fromProjection = new OpenLayers.Projection("EPSG:4326"); // Transform from WGS 1984
var toProjection = new OpenLayers.Projection("EPSG:900913"); // to Spherical Mercator Projection
var position = new OpenLayers.LonLat(window.longitud, window.latitud).transform(fromProjection, toProjection);
var zoom = 17;
map.addLayer(mapnik);
map.setCenter(position, zoom);
var lonLat = new OpenLayers.LonLat(this.longitud, this.latitud)
.transform(
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
map.getProjectionObject() // to Spherical Mercator Projection
);
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
//markers.icon(img/ico-taxi);
markers.addMarker(new OpenLayers.Marker(lonLat));
}
这在index.html中运行良好。但在其他页面我想做同样的事情,但不是总是显示,只显示用户点击手风琴,因为用户必须知道他们在哪里,但我不想在这个页面中一直有一个大的地图。当用户打开手风琴时,app会使用相同的功能创建一个地图,因为div id是相同的。这也很好用,但另外我想把坐标放在两个输入中:inputLat和Input Lon。当用户点击输入中的手风琴时出现未定义但理论上是在index.html中定义的,当他点击手风琴时。但最奇怪的是,当我关闭手风琴并再次打开时,会出现坐标。如何在第一次使用clik手风琴时输入坐标?我给你手风琴功能的代码。
function comprobar() {
var x = document.getElementById("mapa");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
getPosition();
geoLocalizacion();
} else {
x.className = x.className.replace(" w3-show", "");
}
}
function geoLocalizacion () {
document.getElementById("inputLat").value = this.latitud;
document.getElementById("inputLon").value = this.longitud;
}
我试图阅读其他类似的帖子但不起作用。如果我添加var Longitud = this;在它显示的声明中[对象窗口]
javascript returns undefind for a globally declared variable
Why a variable defined global is undefined?
感谢所有我非常确定这是一个菜鸟。