Карты Google и MapFragment и getMapAsync - PullRequest
0 голосов
/ 16 мая 2018

как дела?

Я работаю над приложением для Android на основе карт Google и служб определения местоположения. Я немного знаю о Google Картах, которые я узнал об этом проекте, но есть несколько вещей о GoogleMaps, которых я не знаю ...

В своей основной деятельности я использую mapFragment. У меня есть метод onMapReady ....

@Override
public void onMapReady(GoogleMap map) {

    double myCurrentLatitude = getGPS()[0];
    double myCurrentLongitude = getGPS()[1];

    CameraPosition myCurrentLocation = CameraPosition.builder()
            .target(new LatLng(myCurrentLatitude, myCurrentLongitude))
            .zoom(12)
            .bearing(0)
            .tilt(2)
            .build();

   map.moveCamera(CameraUpdateFactory.newCameraPosition(myCurrentLocation));
    map.getUiSettings().setScrollGesturesEnabled(true);         

}

Это всего лишь один из методов в упражнении, и он работает нормально, и когда действие запускается, оно приближается к месту, где находится пользователь.

Теперь я хочу иметь возможность увеличить карту до определенного места. Допустим, пользователь хочет куда-то пойти, и я могу получить широту и долготу того места, куда он хочет пойти (удваивается) .... Я не смог получить это действие, чтобы изменить фокус карты и увеличить это Новое местоположение.

Я пробовал несколько вещей, но я просто не знаю, как манипулировать фрагментом карты.

Мое небольшое скромное исследование показало мне getMapAsync, но кажется, что это методы, которые вызываются, когда действие только начинается. Я ищу, чтобы написать метод (я назвал его placeLocation (lat, long) ... который можно вызвать через 3 минуты / когда захочу, и он займет в lat / long, который я дам, и увеличить масштаб mapFragment на этом местоположение.

Я попробовал эту строку в моем методе placeLocation

map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

Но android studio очень горько относится к этому методу getMap () - по сути, даже не признает его. и в основном я не знаю, каким образом манипулировать моей картой между getMap, getMapAsync ... вы можете помочь?

Дайте мне несколько указателей, пожалуйста?

Спасибо за чтение и спасибо за ваше время.

Ваш скромный брат в коде.

1 Ответ

0 голосов
/ 16 мая 2018

Сначала вам нужно создать переменную класса, что-то вроде:

private GoogleMap mMap;

Теперь, когда ваш метод onMapReady() запускает, вы можете захватить объект GoogleMap и установить его в переменной класса.

@Override
public void onMapReady(GoogleMap map) {
    mMap = map;

    double myCurrentLatitude = getGPS()[0];
    double myCurrentLongitude = getGPS()[1];

    CameraPosition myCurrentLocation = CameraPosition.builder()
            .target(new LatLng(myCurrentLatitude, myCurrentLongitude))
            .zoom(12)
            .bearing(0)
            .tilt(2)
            .build();

   mMap.moveCamera(CameraUpdateFactory.newCameraPosition(myCurrentLocation));
   mMap.getUiSettings().setScrollGesturesEnabled(true);  
}

Теперь, когда вам нужно будет внести изменения в карту, просто используйте переменную класса "mMap", например:

private void mapMoveTo(double lat, double lng){
    LatLng latLng = new LatLng(lat, lng);
    if(mMap != null){
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomFactor));
    }
}
...