2012-04-24 8 views
0

私は、Googleマップ上にマーカーを表示するカスタムコントロールに取り組んでいます。私は "maptype"、 "zoom"などのプロパティをいくつか持っています.Javascriptでそれらにアクセスするのは簡単です:#{javascript:compositeData.zoom}を使ってズームプロパティの値を取得できます。オブジェクトとしてカスタムコントロールのプロパティグループからプロパティを取得するにはどうすればよいですか?

これは私の問題です:私は、各マーカーのプロパティのグループを使用します。 グループの名前は「マーカー」で、マーカーには「タイトル」、「レイヤー」、「情報テキスト」、「アイコン」、「アドレス」、および「アニメーション」の6つのプロパティーがあります。

私は

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

を持つグループにアクセスしようとした場合、私は放火犯のエラーを取得しています:

は行方不明:プロパティIDのVARマーカー= [{層= 2、 アドレスの後に=オルデンザール、アニメーション= DROP、アイコン=/ogo_notes.png ...

矢印は、レイヤ2 の間に第一=を指しています私は

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

マーカーを使用している場合

(私はstackoverflowの画像に置くことは許されないのです)オブジェクトですが、各オブジェクトは、マーカーのすべてproppertiesた文字列が含まれています。

私は各文字列のオブジェクトを作るためにいくつかのコーディングを行うことができますが、すべての誇張が必要でない場合、これは容易ではありません。 propapertyが必須ではない場合は、文字列に表示されません。

私は私のようなコードで、アイコンの値を得ることができるようにオブジェクトとして各マーカーを得るために、より簡単な方法がなければならないことを推測:

var icon = marker.icon 

私はこれをどのように行うことができますか?

答えて

0

compositeData.marker.iconを使用すると、グループの中でプロパティiconを取得できます。あなたはグループの[プロパティを取得するには、「複数のインスタンスを許可する」にチェックしている場合、あなたは行く必要がありますように

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

とし...

を更新26年04月2012年(のNaveen)

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

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

+0

ような何かあなたのNaveenありがとうございますが、どのように私は今、行うことができます:{ \tするvar A =#{javascriptの: ため (私は++;; .LENGTH VAR I = 0を、私は#{compositeData.marker JavaScriptを} <) compositeData.marker [i] .address}; \tアラート(a); } –

+0

私は申し訳ありませんが、これは私が働いているクライアントサイドのJavaScriptですが言及を忘れていました。 var markers =#{javascript:compositeData.marker}; 私にはエラーがありますが、私はそれを発見しました var markers = '#{javascript:compositeData.marker}'; を持つ文字列値を私に戻って与える [{層= 2、アドレス=オルデンザール、アニメーション= DROP、タイトル=試験タイトル、アイコン=/logo_notes.png、情報テキスト= fzxcxzv}、{レイヤ= 1、アドレス=アニメーション= DROP、タイトル= asdfasdfdafasfas、アイコン=/marker_pin_red.png、情報テキスト=テスト}] –

+0

クライアントサイドのjavascriptとserversideのjavascriptの両方を使用して組み合わせることはできますか? –

関連する問題