1

私はチタンに非常に慣れていないので、これはばかげた質問かもしれませんが、とにかくこの問題を解決できません:

次のように .xml に作成されたマップビューがあります。

<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 つだけです。すべての注釈を表示するにはどうすればよいですか?

4

1 に答える 1

0

間違った注釈オブジェクトを間違ったマップと一致させていません。

MapViewsTitanium for Android には、アドオン ネイティブ モジュールと古いTitanium.Map APIの2 種類があります。アドオンモジュールを使用しています。ドキュメントでこれに注意してください:

このモジュールは、Google Maps API v1 を使用する Android の組み込みの Titanium.Map モジュールに代わるものです。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 によって正しくインスタンス化されているため、注釈が 1 つしか表示されないのはこのためです。

于 2013-10-29T14:53:04.243 に答える