1

Только что ознакомился с API Карт Google (v2) и интегрировал его в свое приложение для Android и у меня есть 2 вопроса, которые я не нашел, что это лучший способ сделать это:Google Maps (V2) в приложении для Android

Первое, что всегда фокусируется на текущем местоположении пользователя (например, на приложении GPS). То, что я сделал это в OnCreate я получаю местоположение пользователя (в зависимости от некоторых вещей я нашел здесь и там))

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map); 

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

     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     Criteria criteria = new Criteria(); 
     String bestProvider = locationManager.getBestProvider(criteria, true); 
     Location location = locationManager.getLastKnownLocation(bestProvider); 
     LatLng currentUserPosition = new LatLng(location.getLatitude(), location.getLongitude()); 
     // setting the cam position to current position 
     CameraPosition camPosition = new CameraPosition(currentUserPosition, 17f, 30f, 0f); 
     CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition); 
     mapFragment.getMap().animateCamera(update); 

     // updating map every second 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 
       1000, // 1-second interval. 
       10, // 10 meters. 
       listener); 
} 

Где listener является LocationListener настроен так:

private final LocationListener listener = new LocationListener() { 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onLocationChanged(Location location) { 
     CameraPosition camPosition = new CameraPosition(new LatLng(location.getLatitude(), location.getLongitude()), 17f, 30f, 0f); 
     MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
     CameraUpdate update = CameraUpdateFactory.newCameraPosition(camPosition); 
     mapFragment.getMap().animateCamera(update); 
    } 
}; 

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

ответ

1

я настоятельно рекомендую после Руководства разработчика учебника от documentation для правильного пути интеграции API v2 Карт для Android в приложение, а также проверки sample code в комплекте с SDK Play сервисов Google.

Лучший (и самый простой) способ автоматического отслеживания местоположения пользователя (My Location dot) реализует OnMyLocationChangeListener и соответственно обновляет камеру в обратном вызове, предоставляемом этим интерфейсом.

Для создания серии сегментов линии, которые соединяют маркеры, вы должны использовать класс Polyline. Редактировать: Вы можете найти это связанное answer полезно для рисования пути между двумя маркерами.

0

Ну на самом деле в Google Map API V2 вы можете использовать:

map.setMyLocationEnabled(true); 

это создаст иконку в окне Google Map следовать текущего пользователя месте. На самом деле я думаю, что это проще, чем реализовать целое LocationListener.

о вопросе маркеров вам потребуется реализовать какое-то окно, в котором пользователь может установить все данные маркера. а затем вы можете добавить маркер динамически, как это:

marker = map.addMarker(new MarkerOptions().position(latlng).title(markersTitleArray[i]).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker))); 

, если вы хотите добавить этот маркер по щелчку карты, то вам необходимо будет осуществить:

map.setOnMapClickListener(this); 
map.setOnMapLongClickListener(this); 

в вашем Activity.

Наконец о вашем последнем вопросе, как вы уже предоставили мой ответ о том, как рисовать Polyline на карте для направлений:

Draw driving route between 2 GeoPoints on GoogleMap SupportMapFragment