1

これが私のコードです

public GeoCoordinateCollection AddCirclePath(GeoCoordinate geoCoordinate, Color stroke, double strokeThickness)
{ 
    Point geoPoint = map.ConvertGeoCoordinateToViewportPoint(geoCoordinate);
    MapPolygon polyCircle = new MapPolygon();
    polyCircle.FillColor = Color.FromArgb(250, 220, 220, 0);
    polyCircle.StrokeColor = stroke;
    polyCircle.StrokeThickness = strokeThickness;
    polyCircle.StrokeDashed = false;
    polyCircle.Path = MapUtils.CreateCircle(geoCoordinate, geoCoordinate.HorizontalAccuracy);
    map.MapElements.Add(polyCircle);

    //click event
    GestureListener gestureListener = GestureService.GetGestureListener(polyCircle);
    gestureListener.Tap += new EventHandler<GestureEventArgs>(CircleTapped);

    return polyCircle.Path;
}

private void CircleTapped(object sender, GestureEventArgs e)
{
    Logger.Log("Circle tapped");
}

上記のコードを使用して地図に円を追加しましたが、この地図要素でタップ イベントを取得できません。Microsoft.Phone.Maps.Controls.Mapマップにクラスを使用しています

4

2 に答える 2

0

(これはかなり古い投稿ですが、他の誰かが解決策を探している場合に備えて、ここに簡単な例を示します。)

API を直接使用して、変換や回避策なしでタップされたマップ要素を取得できるはずです。

ポリゴンを追加します。

var collection = new GeoCoordinateCollection();
collection.Add(new GeoCoordinate(0d, 0d));
collection.Add(new GeoCoordinate(10d, 0d));
collection.Add(new GeoCoordinate(10d, 10d));
collection.Add(new GeoCoordinate(0d, 10d));
collection.Add(new GeoCoordinate(0d, 0d));

var poly = new MapPolygon();
poly.FillColor = Color.FromArgb(80, 255, 0, 0);
poly.StrokeColor = Colors.Red;
poly.StrokeThickness = 15;
poly.Path = collection;
Map.MapElements.Add(poly);

そしてタップをキャッチ。

private void Map_OnTap(object sender, GestureEventArgs e)
{
    var point = e.GetPosition(Map);
    //var coordinate = Map.ConvertViewportPointToGeoCoordinate(point);

    int elements = Map.GetMapElementsAt(point).Count;
    System.Diagnostics.Debug.WriteLine(string.Format("Hit {0} map element(s)", elements));
}

ポリラインに関するバグはポリゴンには適用されません。最後のポイントを 2 回追加する必要はありません。ポリゴンを閉じたままにするために、開始点と終了点を同じにする必要があります (ただし、これも必須ではありません)。リングの向きは、要素が選択可能かどうかに影響しないようです。

于 2014-02-21T10:34:17.350 に答える
0

コントロールとヒット テストにいくつかのバグがあります。解決策の 1 つは、要素の最後の vextex を 2 回追加することです (意味がないことはわかっていますが、これでポリラインのタップの問題が解決されるのを見たことがあるので、ポリゴンでも同じだと思います)。リングの向きが間違っている可能性もあります (時計回りと反時計回り)

于 2013-05-28T06:01:31.783 に答える