Итак, я новичок в написании кода для 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);
}
}