我有一个应用程序,它在地图的中心显示地图和图钉(就像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)));
使相机移动到我选择的位置。但是它总是返回到先前的位置,然后又移动到新的位置。
有什么主意吗?我不确定这种行为从何而来。
答案 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;
}