mapKit not called onObjectAdded
Я хочу реализовать пример в своем проекте: https://github.com/yandex/mapkit-android-demo (userLocation) В примере все работает, появляется маркер. Но в моей реализации не работает, маркер не появляется, карта загружается, а маркер, который установлен onObjectAdded, не установлен, не могу понять почему не вызывается onObjectAdded
Основная деятельность:
import android.app.Activity;
import android.graphics.Color;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.Log;
import com.yandex.mapkit.MapKit;
import com.yandex.mapkit.MapKitFactory;
import com.yandex.mapkit.layers.ObjectEvent;
import com.yandex.mapkit.map.CompositeIcon;
import com.yandex.mapkit.map.IconStyle;
import com.yandex.mapkit.map.RotationType;
import com.yandex.mapkit.mapview.MapView;
import com.yandex.mapkit.user_location.UserLocationLayer;
import com.yandex.mapkit.user_location.UserLocationObjectListener;
import com.yandex.mapkit.user_location.UserLocationView;
import com.yandex.runtime.image.ImageProvider;
public class MainActivity extends Activity implements UserLocationObjectListener {
private final String MAPKIT_API_KEY = "...............................";
private MapView yandexMap;
private UserLocationLayer userLocationLayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
MapKitFactory.setApiKey(MAPKIT_API_KEY);
MapKitFactory.initialize(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
yandexMap = findViewById(R.id.mapview);
yandexMap.getMap().setRotateGesturesEnabled(false);
MapKit mapKit = MapKitFactory.getInstance();
userLocationLayer = mapKit.createUserLocationLayer(yandexMap.getMapWindow());
userLocationLayer.setVisible(true);
userLocationLayer.setHeadingEnabled(true);
userLocationLayer.setObjectListener(this);
}
@Override
protected void onStart() {
super.onStart();
MapKitFactory.getInstance().onStart();
yandexMap.onStart();
}
@Override
protected void onStop() {
yandexMap.onStop();
MapKitFactory.getInstance().onStop();
super.onStop();
}
@Override
public void onObjectAdded(UserLocationView userLocationView) {
Log.d("UserLocationObj","onObjectAdded");
userLocationLayer.setAnchor(
new PointF((float)(yandexMap.getWidth() * 0.5), (float)(yandexMap.getHeight() * 0.5)),
new PointF((float)(yandexMap.getWidth() * 0.5), (float)(yandexMap.getHeight() * 0.83)));
userLocationView.getArrow().setIcon(ImageProvider.fromResource(
this, R.drawable.user_arrow));
CompositeIcon pinIcon = userLocationView.getPin().useCompositeIcon();
pinIcon.setIcon(
"icon",
ImageProvider.fromResource(this, R.drawable.icon),
new IconStyle().setAnchor(new PointF(0f, 0f))
.setRotationType(RotationType.ROTATE)
.setZIndex(0f)
.setScale(1f)
);
pinIcon.setIcon(
"pin",
ImageProvider.fromResource(this, R.drawable.search_result),
new IconStyle().setAnchor(new PointF(0.5f, 0.5f))
.setRotationType(RotationType.ROTATE)
.setZIndex(1f)
.setScale(0.5f)
);
userLocationView.getAccuracyCircle().setFillColor(Color.BLUE);
}
@Override
public void onObjectRemoved(UserLocationView userLocationView) {
}
@Override
public void onObjectUpdated(UserLocationView userLocationView, ObjectEvent objectEvent) {
}
}
gradle:
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.example.testmapkitjava"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.yandex.android:mapkit:3.5.0'
}
}
buildscript {
repositories {
google()
jcenter()
}
}