(地图)添加新的图钉时,请避免将摄像头恢复到先前的位置

时间:2019-04-12 16:10:41

标签: google-maps xamarin geolocation

我有一个应用程序,它在地图的中心显示地图和图钉(就像Uber和PedidosYa一样),我有一个按钮,当我单击它时,它将发送图钉所在的位置。并使其在该图钉附近显示最近的商店。

我的问题是,当地图第一次以其中心位置出现时,我会四处移动地图以定位图钉,并且当我单击按钮时,我希望地图停留在该位置,但它会恢复到先前的位置位置,然后将相机移动到我放下图钉的位置。我想避免这种移动。

当我单击按钮以放置图钉时,我使用的功能是这样的:

var CenterPos = customMap.GetMapCenterLocation();

            var pinPersonal = new CustomPin()
            {
                Id = "000",
                Position = new Position(CenterPos.Latitude, CenterPos.Longitude),
                Label = "Mio",
                Url = "Mío"
            };

            customMap.Pins.Add(pinPersonal);

这会在我单击按钮的地方画一个针。如果我保持这种方式,它会画图钉,并且相机会返回到先前的位置。

使用类似这样的内容后:

customMap.MoveToRegion(MapSpan.FromCenterAndRadius(
                                    new Position(latitud, longitud), Distance.FromMiles(0.2)));

使相机移动到我选择的位置。但是它总是返回到先前的位置,然后又移动到新的位置。

有什么主意吗?我不确定这种行为从何而来。

1 个答案:

答案 0 :(得分:0)

您是否根据Customizing a Map Pin - Xamarin实现了CustomMap

可能您应该覆盖OnMarkerClickListener.OnMarkerClick并在自定义渲染器中返回true。 这意味着禁用默认行为(居中映射,打开信息窗口),并且在单击图钉时可以实现自己的行为。

查看此链接。

    /** Called when the user clicks a marker. */
    @Override
    public boolean onMarkerClick(final Marker marker) {

        // Retrieve the data from the marker.
        Integer clickCount = (Integer) marker.getTag();

        // Check if a click count was set, then display the click count.
        if (clickCount != null) {
            clickCount = clickCount + 1;
            marker.setTag(clickCount);
            Toast.makeText(this,
                           marker.getTitle() +
                           " has been clicked " + clickCount + " times.",
                           Toast.LENGTH_SHORT).show();
        }

        // Return false to indicate that we have not consumed the event and that we wish
        // for the default behavior to occur (which is for the camera to move such that the
        // marker is centered and for the marker's info window to open, if it has one).
        return false;
    }