5

最新の Phone 7 RTM ツールを使用しています (2010 年 10 月 7 日にダウンロードしました)。

ここで簡単なことをしようとしています:

ユーザーがマップ コントロールを 1 回タップすると、そこに画鋲を配置したいと考えています。また、マップ コントロールの通常の組み込みの動作を維持したいと考えています ( 2 回タップしてズームします)。

(両方の動作を維持できない場合は、マップを長押しして画鋲を配置することもできます)。

これを理解しようとしているときに、Phone7 のコントロール マップに加えられた変更に関する次のドキュメントに出くわしました: http://msdn.microsoft.com/en-us/library/ff955762.aspx

次に、ViewportPoint メンバーを持つ新しいクラスMapInputEventArgsを見ました。

通常の SilverLight マップ コントロールのコード例を見ると、次のようなものを見ました。

private void OnMouseClick(object sender, MapMouseEventArgs e)
    {
        Point clickLocation = e.ViewportPoint;
        Location location = x_Map.ViewportPointToLocation(clickLocation);

        Pushpin pushpin = new Pushpin(); 
        m_PushpinLayer.AddChild(pushpin, new Location(latitude, longitude));
    }

しかし、Phone7 の場合、適切なイベント ハンドラーが見つからず、マップ コントロールで MapInputEventArgs を使用しているユーザーを見つけることができませんでした。グーグルで検索しても1件しかヒットしません!!

では、「Tap once」の適切なイベントはどこにあり、このイベントが発生した後に ViewportPoint を取得するにはどうすればよいですか?

前もって感謝します。

4

3 に答える 3

6

まだ問題がある場合は、これを理解してください。

MouseLeftButtonUp および MouseLeftButtonDown イベントには、探しているポイントを返す GetPosition メソッドがあります。

 private void MapMain_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {

        Point p = e.GetPosition(this.MapMain);
        GeoCoordinate geo = new GeoCoordinate();
        geo = MapMain.ViewportPointToLocation(p);
        MapMain.ZoomLevel = 17;
        MapMain.Center = geo;
        //---create a new pushpin---
        Pushpin pin = new Pushpin();

        //---set the location for the pushpin---
        pin.Location = geo;

        //---add the pushpin to the map---
        MapMain.Children.Add(pin);
    }
于 2011-01-30T02:21:50.767 に答える
3

私があなたの質問を間違って読んでいない限り、これはまさにあなたが探しているもののようです:

Silverlight-C#を介してBingMapsに画鋲を追加する

于 2010-11-23T02:20:51.947 に答える
1

さて、それはきれいではありませんが、私は同じ問題を抱えており、画面から指を離したときに作動するような回避策を思いつきました. ブール値をインスタンス化します。

         bool noPin = false;

次に、これを使用して、ユーザーがズームまたはパンを行っているかどうかを判断します (これらは、MouseLeftButtonDown イベントと MouseLeftButtonUp イベントの間で発生します)。Up イベントで、ユーザーがズームまたはパンを行っているかどうかを確認し、そうでない場合は画鋲を配置します。

    private void mHome_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        noPin = false;
    }

    private void mHome_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (!noPin)
            PlacePushPin();
    }

    private void mHome_MapPan(object sender, MapDragEventArgs e)
    {
        tbTemp.Text += "pan";
    }

    private void mHome_MapZoom(object sender, MapZoomEventArgs e)
    {
        tbTemp.Text += "zoom";
    }

美しくはありませんが、まあ、私が管理できる最高のものでした.

于 2010-11-06T22:00:17.547 に答える