MapView работает на эмуляторе, но не на телефоне - PullRequest
0 голосов
/ 31 марта 2011

Я правильно установил Google Map API в моем приложении, все отлично работает с эмулятором. Но когда я передаю его на свой телефон, он больше не работает (есть эта сетка), и я не могу найти, что случилось.

public class Main extends MapActivity {
    /** Called when the activity is first created. */
    MapView map ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = (MapView)findViewById(R.id.mapview);
        map.setSatellite(true);
        List<Overlay> mapOverlays = map.getOverlays();
        Drawable drawable = this.getResources().getDrawable(R.drawable.pins);
        HelloItem itemizedoverlay = new HelloItem(drawable, this);
        GeoPoint point = new GeoPoint(19240000,-99120000);
        OverlayItem overlayitem = new OverlayItem(point, "Hola, Mundo!", "I'm in Mexico City!");
        itemizedoverlay.addOverlay(overlayitem);
        mapOverlays.add(itemizedoverlay);
        map.setBuiltInZoomControls(true);
    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
}

public class HelloItem extends ItemizedOverlay {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
private Context mContext;

public HelloItem(Drawable defaultMarker) {
    super(boundCenterBottom(defaultMarker));
}
public HelloItem(Drawable defaultMarker, Context context) {
    super(boundCenterBottom(defaultMarker));
    mContext = context;
    }

@Override
protected OverlayItem createItem(int i) {
    // TODO Auto-generated method stub
      return mOverlays.get(i);
}
public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}
@Override
public int size() {
      return mOverlays.size();
}
protected boolean onTap(int index) {
      OverlayItem item = mOverlays.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
    }

}

1 Ответ

0 голосов
/ 15 ноября 2012

Это происходит потому, что вам нужно использовать другое .keystore, одно для эмулятора (отладка), другое для устройства (релиз).следуйте тем же процедурам, когда вы приобрели свой ключ API debug.keystore MD5 & Map API у Google.на этот раз вам нужно получить обе данные для your_own.keystore, который предназначен для публикации на устройстве.затем измените ключ API карты в макете карты, карта отобразится на вашем устройстве.

...