Не могу получить мою GoogleMap для анимации в точку - PullRequest
0 голосов
/ 20 октября 2011

Так что я довольно новичок в написании кода для Android, и я читал книгу «Здравствуй, Android», третье издание Эд Бернетт. Мне было любопытно, и я решил запрограммировать раздел GPS на карту. поэтому я следовал за кодом здесь изначально. http://mobiforge.com/developing/story/using-google-maps-android. в этом примере с Мобифогом он указывает свою долготу и широту. но я хотел смешать это с GPS из книги.

Мне удалось скомпилировать и запустить код, который я написал. Однако даже отправляя долготу и широту через эмулятор, код просто отказывается анимировать и увеличивать масштаб. Поэтому мне любопытно, почему мой код не анимирует и не увеличивает.

Я попытался просмотреть документацию, чтобы узнать, не упустил ли я что-нибудь для решения этой проблемы. http://developer.android.com/reference/android/location/LocationManager.html и код. google.com/android/add-ons/google-apis/reference/com/google/android/maps/GeoPoint.html, но, похоже, все это говорит о том, что у меня есть все необходимое. так что я не знаю, что я что-то упускаю.

package org.example.GoogleMaps;

import java.util.List;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MapView.LayoutParams;

import android.app.Activity;
import android.location.Criteria;
import android.location.LocationListener;
import android.location.LocationProvider;
import android.location.Location;
import android.location.LocationManager; 
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;

public class GoogleMaps extends MapActivity implements LocationListener
{    
MapView mapView;
MapController mc;
GeoPoint p;
LocationManager mgr;
String best;
Location location;
Double lng;
Double lat;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    mapView = (MapView) findViewById(R.id.mapView);
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
    View zoomView = mapView.getZoomControls(); 

    zoomLayout.addView(zoomView, 
        new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, 
            LayoutParams.WRAP_CONTENT)); 
    mapView.displayZoomControls(true);

    mgr = (LocationManager) getSystemService(LOCATION_SERVICE);      

    Criteria criteria = new Criteria();
    best = mgr.getBestProvider(criteria, true);
    location = mgr.getLastKnownLocation(best);
    dumpLocation(location);


}

@Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}
public void onLocationChanged(Location location) {
  dumpLocation(location);
}

public void onProviderDisabled(String provider) {
      log("\nProvider disabled: " + provider);
}

public void onProviderEnabled(String provider) {
  log("\nProvider enabled: " + provider);
}

public void onStatusChanged(String provider, int status,
     Bundle extras) {
  log("\nProvider status changed: " + provider + ", status = something" + ", extras=" + extras);
}

private void dumpLocation(Location location) {
      if (location == null)
          log("location = null");
      else
      {
            lat = location.getLatitude();
            lng = location.getLongitude();


            mc = mapView.getController();
            p = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));

            mc.animateTo(p);
            mc.setZoom(15); 
      }

}

private void log(String string) {
      Toast.makeText(this, string, 6000);
   }

}

Ответы [ 2 ]

4 голосов
/ 31 июля 2012

Вы не используете getLastKnownLocation для запуска поставщика местоположения.Используйте requestLocationUpdates .

mgr.requestLocationUpdates(best, 0, 0, this);

Я нашел эту запись в блоге очень полезной для понимания, как получить местоположение: Глубокое погружение в местоположение

также отсутствует mc = mapView.getController(); в onCreate ().

2 голосов
/ 31 июля 2012

Я сталкивался с этой проблемой ранее,

  1. Убедитесь, что вы использовали getcontroller метод, он должен выглядеть следующим образом mc = mapView.getController();.
  2. Убедитесь, что вы сгенерировали ключ API Карт Android и включили его в файл main.xml.
...