我对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);
}
我创建了更多注释但只出现了一个。如何显示所有注释?
答案 0 :(得分:0)
错误的注释对象与错误的地图不匹配。
Titanium for Android中有两种类型的MapViews
,the 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正确实例化的。