Я хочу ставить маркер на карту каждый раз при изменении местоположения. Я беру широту и долготу из Location и создаю маркер в методе onLocationChanged(). Почему не создается маркер?

 public class MainActivity extends FragmentActivity implements LocationListener
{
Context context = this;
GoogleMap googlemap;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initMap();
    addTwittertoMap();

    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000, 0,
            this);
    String provider = lm.getBestProvider(new Criteria(), true);

}

public void onLocationChanged(Location location) {
    LatLng current = new LatLng(location.getLatitude(), location.getLatitude());
    Date date = new Date();

    googlemap.addMarker(new MarkerOptions()
            .title("Current Pos")
            .snippet(new Timestamp(date.getTime()).toString())
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
            .position(current)
            );
}

public void onStatusChanged(String provider, int status, Bundle extras) {
}

public void onProviderEnabled(String provider) {
}

public void onProviderDisabled(String provider) {

}
private void initMap(){
    SupportMapFragment mf = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
    googlemap = mf.getMap();

    googlemap.setMyLocationEnabled(true);
    googlemap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
4
Jane Doh 10 Фев 2013 в 04:24
Вы уверены, что получаете обновления о местоположении?
 – 
iagreen
10 Фев 2013 в 06:07
Да, я тестировал его на улице, ездил, и он обновляется.
 – 
Jane Doh
11 Фев 2013 в 04:29
Я бы увеличил масштаб до полученного местоположения, просто чтобы проверить. Итак, в вашем onLocationChanged увеличьте масштаб до места, чтобы убедиться, что маркер не добавлен.
 – 
Sherif elKhatib
15 Фев 2013 в 18:16

1 ответ

Лучший ответ

LatLng current = new LatLng(location.getLatitude(), location.getLatitude()); должно быть LatLng current = new LatLng(location.getLatitude(), location.getLongitude());

Кроме того, в качестве улучшения конфигурации LocationManager я бы предложил настроить его следующим образом:

    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    String provider = lm.getBestProvider(new Criteria(), true);
    lm.requestLocationUpdates(provider, 10000, 0, this);
2
Houf 17 Фев 2013 в 18:32