1

我对 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 上,在运行时我创建新注释并将其添加到地图视图,如下所示:

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);
}

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

4

1 回答 1

0

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

MapViewsTitanium for Android有两种类型,附加原生模块和旧的Titanium.Map API。您正在使用附加模块。请在文档中注意这一点:

该模块是 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 正确实例化的。

于 2013-10-29T14:53:04.243 回答