4

私は現在これらの地図について学んでいます。ここで、押しピンが既にある場合にそれを更新するメソッドを作成したいと思います。

a. setLocation(newLocation) を使用しようとしましたが、残念ながら、これを行ったときに、クライアント側のコードに到達しませんでした (コード構文が正しくないと考えていますが、クロムでエラーは発生しませんでした)

b. 次に、それを削除して別のものを作成する方法を学ぼうとしましたが、http://msdn.microsoft.com/en-us/library/gg427610.aspxからリソースを見つけることができません- 十分に検索していない可能性があります。

押しピンを移動する方法と削除する方法について、誰かが私にガイドを提供できますか? 皆様、どうもありがとうございました

var loc = new Microsoft.Maps.Location(lat, lon);

var pin = new Microsoft.Maps.Pushpin(loc);

編集:部分的な答え

押しピンの取り外し:

if (pin != null)
{
    map.entities.remove(pin)
}
4

2 に答える 2

4

画鋲を動かすことsetLocation()は、確かにあなたが使用する必要がある機能です。マップ上のイベントハンドラーからsetLocationを呼び出そうとしていますか?その場合は、イベントハンドラーが正しく設定されていないため、呼び出されない可能性があります。ただし、すでにプッシュピン(変数名myPushpin)を定義してマップに挿入している場合は、次のコードを実行すると移動します。

// Move pushpin to "38.0", "-97.0"
var loc = new Microsoft.Maps.Location(38.0, -97.0);
myPushpin.setLocation(loc);

これが実際に動作していることを確認するには、Ajax Bing Maps v7インタラクティブSDKに移動し、画面の中央下部にある青色のコードをさまざまな座標で変更し、[実行]ボタンを押して、画鋲が動くのを確認します。

マップに追加された画鋲を削除するには、それが追加されたEntityCollectionから画鋲を削除する必要があります。たとえば、画鋲をyourmap.entitiesに挿入しただけの場合、次のように削除します。

var index = yourmap.entities.indexOf(myPushpin);
if (index != -1) {
    yourmap.entities.removeAt(index);
}

または、インデックスを使用せずに直接削除することもできます。

yourmap.entities.remove(myPushpin);

更新:ユーザーがプッシュピンをクリックしたときにプッシュピンを削除するには、基本的に、クリックイベントハンドラーでクリックされたプッシュピンを最初に識別する必要があります。画鋲は、クリックハンドラーに渡されるMouseEventArgsオブジェクトのターゲットプロパティから取得できます。

Microsoft.Maps.Events.addHandler(pushpin, 'click', function (mouseEvent) {
    var pushPinThatWasClicked = mouseEvent.target;
    // Do whatever you want with pushPinThatWasClicked 
});
于 2012-04-11T20:55:04.757 に答える