Пытаюсь реализовать карту в своей активити, но при переходе из категории в активити карта не загружается:
Класс MapActivity
public class MapActivity extends AppCompatActivity implements OnMapReadyCallback {
GoogleMap googleMap;
private static final double TARGET_LATITUDE = 17.893366;
private static final double TARGET_LONGITUDE = 19.511868;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
createMapView();
}
private void createMapView() {
// MapsInitializer.initialize(context);
try {
if (null == googleMap) {
((MapFragment) getFragmentManager().findFragmentById(
R.id.mapView)).getMapAsync(this);
if (null == googleMap) {
Toast.makeText(getApplicationContext(),
"Error creating map", Toast.LENGTH_SHORT).show();
}
}
} catch (NullPointerException exception) {
Log.e("mapApp", exception.toString());
}
}
private void addMarker() {
double lat = TARGET_LATITUDE;
double lng = TARGET_LONGITUDE;
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(lat, lng))
.zoom(15)
.build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition);
googleMap.animateCamera(cameraUpdate);
if (null != googleMap) {
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(lat, lng))
.title("Mark")
.draggable(false)
);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
addMarker();
}
}
До этого была ошибка в самом коде,
Cannot resolve method getMap
В участке кода:
try {
if(null == googleMap){
googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.mapView)).getMap();
Но я решил заменить getMap
на getMapAsync
, а также имплементировать классу OnMapReadyCallback
. Возможно в этом причина ошибок.
Код layout
активити:
<?xml version="1.0" encoding="utf-8"?>
<fragment
android:id="@+id/mapView"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Попробуйте следующим образом обозначить Вашу карту с маркером:
Код layout
:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
В Вашем методе createMapView оставить пока так:
private void createMapView() {
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
Ну и в методе onMapReady
:
@Override
public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Marker"));
}
Перед тем как имплементируете:
public class MapActivity extends FragmentActivity implements OnMapReadyCallback
А также вот вам ссылка в помощь, надеюсь поможет.
Нужно вызывать addMarker() в методе onMapReady. onMapReady - это метод, который вызывается когда карта готова к использованию. В нем нужно делать начальные настройки, и отрисовку маркеров сделайте в нем. Еще вызовите обязательно в методе onCreate метод getMapAsync(this);
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Подскажите,отправляю на сервер текст + файлФайл - фото
Здравствуйте! я начинающий прогер и не могу разобраться помогите пожалуйстаЕсть NavigationView и несколько фрагмент страничек