HelloGoogleMaps - не загружаются данные карт - PullRequest
1 голос
/ 22 июля 2011

Я не могу получить учебник HelloGoogleMaps (или мою реализацию в другом проекте) для загрузки карт после запуска. Он отлично работает в приложении Google Maps, но не в проекте. Что происходит!

Карта

public class Map extends MapActivity {
List<Overlay> mapOverlays;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    MapView mapView = (MapView) findViewById(R.id.mapview);

    mapView.setBuiltInZoomControls(true);
    mapView.setSatellite(true);

    mapOverlays = mapView.getOverlays();

    addLocation(1,19.240000, -99.120000, "Hhola, Mundo!", "I'm in Mexico City!");
    addLocation(2,35.410000, -139.460000, "Sekai, konichiwa!", "I'm in Japan!");

}

@Override
protected boolean isRouteDisplayed() {
    return false;
}

public void addLocation(int index, double latitude, double longitude, String textPrimary, String textSecondary){

    Drawable drawable = this.getResources().getDrawable(R.drawable.redmarker_a);
    if(index == 2)
        drawable = this.getResources().getDrawable(R.drawable.redmarker_b);
    else if(index == 3)
        drawable = this.getResources().getDrawable(R.drawable.palebluemarker_u);

    ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable,getApplicationContext());

    GeoPoint newPoint = new GeoPoint((int)(latitude * 1000000),(int)(longitude * 1000000));
    OverlayItem newOverlayItem = new OverlayItem(newPoint, textPrimary, textSecondary);

    itemizedoverlay.addOverlay(newOverlayItem);
    mapOverlays.add(itemizedoverlay);       
}
}

ItemizedOverlay:

public class ItemizedOverlay extends com.google.android.maps.ItemizedOverlay {

private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
Context mContext;

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

@Override
protected OverlayItem createItem(int i) {
  return mOverlays.get(i);
}

@Override
public int size() {
  return mOverlays.size();
}

public void addOverlay(OverlayItem overlay) {
    mOverlays.add(overlay);
    populate();
}

@Override
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;
    }

}

Manifest

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.apl.example"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="11" />
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <uses-library android:name="com.google.android.maps" />
        <activity android:name=".Map"
                  android:label="@string/app_name"
                  android:theme="@android:style/Theme.NoTitleBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

main.xml

    <?xml version="1.0" encoding="utf-8"?>
<com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="09e81PCxJyJXAblqt5veOmOE7Yy4-X6P5nLKi3Q"
/>

Этот код работает, если я иду на 2.3.3 проект в эмуляторе. Но не 3.0.1 на моем устройстве.

1 Ответ

0 голосов
/ 22 июля 2011

также убедитесь, что в вашем манифесте указано разрешение на использование интернета, и если при тестировании на эмуляторе вам нужно включить интернет с аргументом запуска -dns 8.8.8.8

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

также обратите внимание, что ключ mapapi связан с вашим файлом "подписи" (этап экспорта, если вы тестируете на реальном устройстве), то есть если вы использовали test.keystore, чтобы создать ключ API карт, то создали новый хранилище ключей. пришлось бы повторить ключ API карты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...