android - 在 Android 版 Titanium Appaccelerator 上获取 MapView 上的坐标

标签 android google-maps titanium

我正在尝试获取 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};

如果我不移动 map 的位置(就在程序启动时),这效果很好。但是,如果我将 map 移动到其他位置,则变量区域不会更新。它始终相同(纬度:37.390749,经度:-122.081651)

如何获取更新后的坐标?

最佳答案

解决了!

该值显然并不意味着每次您在 map 上移动时都会发生变化。您可以使用以下方法创建一个方法来更新这些变量:

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 文件的顶部。另外你需要告诉 map 调用函数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"行。

关于android - 在 Android 版 Titanium Appaccelerator 上获取 MapView 上的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19510730/

相关文章:

angular - Angular map 的 ZoomChange 或 centerChange 事件?

android - 无法获取未知属性 'PLAY_SERVICES_VERSION'

android - 使用 Titanium 开发 iPhone 和 Android 应用程序 UI 的最佳实践

windows - 为什么在写入以点开头的文件时,使用 Android SDK 会出现 Windows 文件权限错误(IO 错误 13)?

android - 媒体播放器android中的SetDataSource

java - 解析短信的最佳方式是什么

android - Firebase 密码注册不保存用户

android udp 接收不起作用?

Android:Google map 不适用于 Phonegap

titanium - Appcelerator super 高铁与普通钛合金模块