0

Googleマップにマーカーを表示するカスタムコントロールに取り組んでいます。「maptype」、「zoom」などのプロパティがいくつかあります。Javascriptでそれらに簡単にアクセスできます。zoomプロパティ#{javascript:compositeData.zoom}の値を取得するために使用できます。

これが私の問題です。各マーカーにプロパティのグループを使用します。グループの名前は「marker」で、マーカーには「title」、「layer」、「infotext」、「icon」、「address」、「animation」の6つのプロパティがあります。

でグループにアクセスしようとすると

var markers = #{javascript:compositeData.marker}; 

firebugでエラーが発生します:

欠落:プロパティIDの後varマーカー= [{layer = 2、address = Oldenzaal、animation = DROP、icon = / ogo_notes.png .. ..

矢印は最初の=レイヤーと2の間を指しています(スタックオーバーフローで画像を入れることは許可されていません)

使用する場合

var markers = #{javascript:'"' + compositeData.marker + '"'};

マーカーはオブジェクトですが、各オブジェクトには、マーカーのすべてのプロパティを含む文字列が含まれています。

各文字列のオブジェクトを作成するためにコーディングを行うことができることは知っていますが、すべてのプロパティが必要でない場合、これは簡単ではありません。プロパティが必要ない場合は、文字列に表示されません。

次のようなコードでアイコンの値を取得できるように、各マーカーをオブジェクトとして取得するためのより簡単な方法が必要だと思います。

var icon = marker.icon

これどうやってするの?

4

1 に答える 1

0

group 内compositeData.marker.iconのプロパティを取得するために使用できます。グループの [複数のインスタンスを許可する] をオンにした場合、プロパティを取得するには、次の手順を実行する必要があります。iconmarker

compositeData.marker[0].icon
compositeData.marker[1].icon

等々...

2012 年 4 月 26 日更新 (Naveen)

クライアント側の JavaScript で使用するには、次のように非表示の入力フィールドに値を入力してみてください。

<xp:inputHidden id="hdnIcon">
        <xp:this.defaultValue><![CDATA[#{javascript:var value = new Array();
for (var i=0 ; i<compositeData.marker.length ; i++) {
    value.push(compositeData.marker[i].icon);
}
return @Implode(value, ",");}]]></xp:this.defaultValue>
</xp:inputHidden>

この非表示の入力フィールドの値は、次のようにクライアント側の JavaScript を介して読み取ることができます。

var value = document.getElementById("#{id:hdnIcon}").value.split(",");
for (var i=0 ; i<value.length ; i++) {
    <YOUR CODE>
}

これを行う別の方法として、compositeData.markerとその内容を JSON 文字列に変換してから、クライアント側の JavaScript を実行することができます。

于 2012-04-24T15:08:00.913 に答える