Sygic не показывает текущую позицию и не отображает маркеры
Я хочу показать индикатор местоположения при загрузке карты и добавлять маркер при каждом нажатии на карту, но ни один из них, похоже, не работает!
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MapFragment mapFragment = (MapFragment) getSupportFragmentManager().findFragmentById(R.id.mapFragment);
assert mapFragment != null;
mapFragment.getMapAsync(new OnMapInitListener() {
@Override
public void onMapReady(MapView mapView) {
OnlineManager.getInstance().enableOnlineMapStreaming(true);
PositionManager.getInstance().startPositionUpdating();
PositionManager.getInstance().enableRemotePositioningService();
mpView=mapView;
mpView.addMapGestureListener(new MapGestureAdapter() {
@Override
public boolean onMapClicked(final MotionEvent e, final boolean isTwoFingers) {
MapMarker marker = new MapMarker(new GeoCoordinates(PositionManager.getInstance().getLastKnownPosition().getLongitudeAccuracy(),PositionManager.getInstance().getLastKnownPosition().getLatitudeAccuracy()));
mpView.addMapObject(marker);
return true;
}
});
}
@Override
public void onMapError(int error, String info) {}
});
}
1 ответ
Вы пытаетесь создать новый маркер с getLongitudeAccuracy()
а также getLatitudeAccuracy()
, Вам нужно использовать географические координаты!
Если вы хотите добавить маркер в положение последнего известного сигнала GPS, вы можете использовать этот код:MapMarker marker = new MapMarker(PositionManager.getInstance().getLastKnownPosition().getCoordinates())
Но поскольку в это время не может быть никакой известной позиции, это может привести к тому, что маркер не будет добавлен. Поэтому убедитесь, что у вас есть местоположение и сильный сигнал. Исходя из вашего примера, было бы более целесообразно добавить маркер в позицию, по которой вы щелкнули. Для этого используйте этот код:
mpView.addMapGestureListener(new MapGestureAdapter() {
@Override
public boolean onMapClicked(final MotionEvent e, final boolean isTwoFingers) {
MapMarker marker = new MapMarker(mpView.geoCoordinatesFromPoint(e.getX(), e.getY()));
mpView.addMapObject(marker);
return true;
}
});