You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Titanium地图移动大头针后无法获取新坐标问题咨询

解决Ti.Map拖动大头针后无法获取新坐标的问题

嘿,我一看你的问题就知道问题出在哪了——你现在的代码监听的是设备自身的位置更新事件(Ti.Geolocation的location事件),这个事件只有当设备的真实位置变化时才会触发,和你手动拖动地图上的大头针完全是两回事!所以不管你怎么拖大头针,它只会返回一开始获取到的设备坐标。

要解决这个问题,你需要监听大头针拖动结束的事件,同时还要确保大头针是允许拖动的,下面是具体的步骤和修改后的代码:

关键修改点

  • 给你的大头针(Annotation)设置draggable: true,允许用户拖动它
  • 监听大头针的dragend事件,在拖动结束时获取新坐标

完整代码示例

var Map = require('ti.map');

// 创建地图视图
var mapView = Map.createView({
    mapType: Map.NORMAL_TYPE,
    animate: true,
    regionFit: true,
    userLocation: true
});

// 创建可拖动的大头针(初始位置用用户当前位置)
var draggablePin = Map.createAnnotation({
    title: "拖动我修改位置",
    draggable: true, // 必须开启这个才能拖动
    pincolor: Map.ANNOTATION_RED
});

mapView.addAnnotation(draggablePin);

// 监听大头针拖动结束事件,获取新坐标
draggablePin.addEventListener('dragend', function(e) {
    var newLatitude = e.annotation.latitude;
    var newLongitude = e.annotation.longitude;
    console.log("拖动后的新坐标:纬度 " + newLatitude + ",经度 " + newLongitude);
    // 这里可以把新坐标用于后续逻辑
});

// 保留原来的逻辑获取用户初始位置,设置地图和大头针的初始位置
if (Ti.Geolocation.locationServicesEnabled) {
    Ti.Geolocation.getCurrentPosition(function(e) {
        if (e.error) {
            alert('获取位置失败: ' + e.error);
        } else {
            var initialLat = e.coords.latitude;
            var initialLng = e.coords.longitude;
            // 更新地图区域到用户当前位置
            mapView.setRegion({
                latitude: initialLat,
                longitude: initialLng,
                latitudeDelta: 0.01,
                longitudeDelta: 0.01
            });
            // 设置大头针初始位置
            draggablePin.setLatitude(initialLat);
            draggablePin.setLongitude(initialLng);
        }
    });
} else {
    alert("请先开启设备的位置服务");
}

// 记得把mapView添加到窗口中
$.window.add(mapView);
$.window.open();

额外说明

  • 如果你用的是旧版本的Titanium SDK,可能需要监听地图视图的regionchanged事件,但更准确的还是监听大头针的dragend事件,因为regionchanged会在用户拖动地图时也触发,而不仅仅是拖动大头针。
  • 要确保你的Annotation确实设置了draggable: true,否则用户根本拖不动大头针,自然也不会触发事件。

内容的提问来源于stack exchange,提问作者Marc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:39:49