在Titanium MapView上访问运行​​时创建的注释

时间:2013-10-29 10:33:52

标签: titanium titanium-mobile titanium-alloy

我对Titanium很新,所以这可能是一个愚蠢的问题,无论如何我无法解决这个问题:

我在.xml上创建了一个mapview,如下所示:

<View id="mapview" ns="Ti.Map" mapType="Ti.Map.STANDARD_TYPE" >
    <Annotation id="place" latitude="20.735145" longitude="-103.4548" title="Tech" pincolor="Titanium.Map.ANNOTATION_RED" leftButton="/images/appcelerator_small.png" />
</View>

在.js上,在运行时我创建并添加新的注释到mapview,如下所示:

var newDropMessage = Titanium.Map.createAnnotation({
        latitude:10,
        longitude:10,
        title:"Hi",
        pincolor:Titanium.Map.ANNOTATION_RED,           
        animate:true,
        rightButton: Titanium.UI.iPhone.SystemButton.DISCLOSURE
    });

    $.mapview.addAnnotation(newDropMessage); //Add the annotation

稍后在代码中我无法循环每个注释,只有第一个注释(在XML上创建的注释)显示带有如下代码的警报:

for (i = 0; i < $.mapview.annotations.length; i++)
{
    alert($.mapview.annotations[i].title);
}

我创建了更多注释但只出现了一个。如何显示所有注释?

1 个答案:

答案 0 :(得分:0)

错误的注释对象与错误的地图不匹配。

Titanium for Android中有两种类型的MapViewsthe add-on native module和旧的Titanium.Map API。您正在使用add on模块。请注意以下文档:

  

此模块可替代Android上的内置Titanium.Map模块,该模块使用Google Maps API v1。 Google Maps API v1已弃用,Google将于2013年3月3日后不再发布新的Maps API v1密钥。新应用程序应在Android上使用此模块

在您的代码中,您正在从 MapView创建错误的注释类型。而是使用新模块创建这样的注释:

// Include the new map module
var NewMapModule = require('ti.map');
var mountainView = NewMapModule.createAnnotation({
    latitude:37.390749,
    longitude:-122.081651,
    title:"Appcelerator Headquarters",
    subtitle:'Mountain View, CA',
    pincolor:Alloy.Globals.Map.ANNOTATION_RED,
    myid:1 // Custom property to uniquely identify this annotation.
});

$.mapview.region = {latitude:33.74511, longitude:-84.38993,
                    latitudeDelta:0.01, longitudeDelta:0.01};
$.mapview.addAnnotation(mountainView);

这就是为什么你只看到一个注释,因为它是由Alloy正确实例化的。