MapBox Android SDK v4.1.1.1 через Xamarin Component (https://components.xamarin.com/view/mapboxsdk/)MapBox Пользовательского маркер анкерные и зуммирование вопросы
Я использую пример тестовый стенд, поставляемый с компонентом Xamarin выше и пытаюсь установить растяжимый в качестве Значок маркера с помощью класса Маркерный маркер. Во время выполнения привязка маркера, по-видимому, устанавливается по умолчанию/слева по умолчанию, что приводит к тому, что маркер перемещается по карте South West во время любого масштабирования и на северо-востоке при масштабировании. Если я удалю настройку значка, тогда используется значок по умолчанию, и он правильно позиционируется во время любых жестов масштабирования и вращения.
Может ли кто-нибудь дать представление о таком поведении и о том, как противостоять ему?
кодПример:
protected override async void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
mapView = FindViewById<MapView> (Resource.Id.mapview);
mapView.AccessToken = GetString (Resource.String.mapboxAccessToken);
mapView.StyleUrl = Mapbox.Constants.Style.MapboxStreets;
mapView.OnCreate (bundle);
// Get the map instance
map = await mapView.GetMapAsync();
map.UiSettings.ZoomControlsEnabled = true;
//Removed code for click events
map.AddMarker (new MarkerOptions()
.SetTitle ("Test Marker")
.SetPosition (new LatLng (41.885, -87.679))
//This is the only change made from the provided sample code - for setting the icon
.SetIcon(IconFactory.GetInstance(this).FromResource(Resource.Drawable.Driver_Pin)
//This is the only change made from the provided sample code - for setting the icon
);
var position = new CameraPosition.Builder()
.Target (new LatLng (41.885, -87.679)) // Sets the new camera position
.Zoom (11) // Sets the zoom
.Build(); // Creates a CameraPosition from the builder
map.AnimateCamera (CameraUpdateFactory.NewCameraPosition (position), 3000);
}
Я переключил использовать класс MapBox MarkerView, который дает доступ к методу SetAnchor(), однако это не оказывает какого-либо влияния на вопрос, независимо от того, что значения я использую ,
map.AddMarker (new MarkerViewOptions()
.SetTitle ("Test Marker")
.SetPosition (new LatLng (41.885, -87.679))
.SetAnchor(0.5f, 1.0f) // this should be bottom center
.SetIcon(IconFactory.GetInstance(this).FromResource(Resource.Drawable.Driver_Pin))
);
значка вытяжка Я использую простой квадрат PNG без заполнения с ожидаемой точкой на карте, чтобы быть в центре нижней части иконы.
Кроме того, если я включаю встроенные кнопки масштабирования (через UISettings), то увеличение и уменьшение масштаба также, по-видимому, имеет смещение по верхнему/левому краю, что означает, что вместо того, чтобы приближаться к центральной точке видимой карты, zoom, похоже, сосредоточен на точке юго-запада от нее.
Это сообщение Drawable icons on route not pinned at base похоже связано с проблемой, которую я вижу, и окончательный комментарий от OP указывает, что проблема с пользовательскими значками маркеров и привязкой по-прежнему сохраняется, хотя ссылка делается на постановку проблем, v4.1.1.
Большое спасибо за ответ @cammace, который соответствует моим выводам, и мне действительно нужно было воссоздать мои атрибуты маркера с соответствующим заполнением (в соответствии с маркером по умолчанию, используемым в коде карты), и это решило проблему перемещения маркеров по масштабированию. Как только Xamarin выпускает обновленный компонент с помощью v4.2.x, я обновляюсь, поскольку вижу, что он имеет лучшую производительность в целом. – gazp