我正在尝试获取Titanium MapView(在Android上运行的应用)的纬度/经度坐标。
我的index.xml上有以下代码:
<Alloy>
<Window id="win">
<View id="mapview" ns="Ti.Map" onClick="doClick" onComplete="setRegion"
animate="true" regionFit="true" userLocation="true"
onLongpress="lngPress"
mapType="Ti.Map.STANDARD_TYPE" >
<Annotation id="mountainView"
latitude="37.390749" longitude="-122.081651"
title="Appcelerator Headquarters" subtitle="Mountain View, CA"
pincolor="Titanium.Map.ANNOTATION_RED"
leftButton="/images/appcelerator_small.png"
myid="1"/>
</View>
</Window>
</Alloy>
在我的index.js上我有以下功能:
function lngPress(evt) {
var region = $.mapview.getRegion();
alert('regionlat' + region.latitude + '&' + region.longitude);
//alert('LongPress' + lat + '&' + lon);
}
$.mapview.annotations = [$.mountainView];
$.mapview.region = {latitude:37.390749, longitude:-122.081651, latitudeDelta:0.01, longitudeDelta:0.01};
如果我不移动地图的位置(仅在程序启动时),这可以正常工作。但是,如果我将地图移动到其他位置,则不会更新变量区域。它总是一样的(纬度:37.390749,经度:-122.081651)
如何获取更新的坐标?
答案 0 :(得分:3)
解决了!
每次在地图上移动时,显然并不意味着改变价值。您可以使用以下方法创建一个更新这些变量的方法:
function rgnChanged(evt)
{
//alert('map moved');
Ti.App.currentLat = evt.latitude;
Ti.App.currentLon = evt.longitude;
}
这里Ti.App.currentXXX是全局变量,定义为:
Ti.App.currentLat = 20;
Ti.App.currentLon = 10;
在.js文件的顶部。你还需要告诉地图调用函数rgnChanged,新的index.xml是这个(翻录非重要部分):
<View id="mapview" ns="Ti.Map" onClick="doClick" onComplete="setRegion" animate="true" regionFit="true" userLocation="true" onLongpress="lngPress" onRegionChanged="rgnChanged" mapType="Ti.Map.STANDARD_TYPE" > <Annotation id="mountainView" latitude="37.390749" longitude="-122.081651" title="Appcelerator Headquarters" subtitle="Mountain View, CA" pincolor="Titanium.Map.ANNOTATION_RED" leftButton="/images/appcelerator_small.png" myid="1"/> </View>
注意onRegionChanged =“rgnChanged”行。