2013-10-29 60 views
1

我很新的鈦所以這可能是一個愚蠢的問題,反正我解決不了這個問題:鈦MapView的訪問運行時創建的註釋

我有這樣的.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 

在後面的代碼我不能每個註釋週期的波谷,而只有第一ANNOT通貨膨脹(在XML創建的)顯示警報,這樣的代碼:

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

我創造了更多的註釋,但只有一個出現。我如何顯示所有註釋?

回答

0

您將錯誤的註記對象與錯誤的地圖不匹配。

Android的Titanium中有MapViews兩種類型,the add-on native module和舊的Titanium.Map API。您正在使用附加模塊。請注意文檔中的內容:

此模塊替代Android上內置的Titanium.Map模塊,該模塊使用Google Maps API v1。谷歌地圖API V1被棄用,谷歌將3月3日以後不再發行新的Maps API V1鍵,2013年新的應用程序應該在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); 

這就是爲什麼你只看到了一個註解,因爲它是由合金正確實例。