Android - увеличение масштаба в настройках Hybrid, карта Google показывает только пустой фон - PullRequest
0 голосов
/ 24 января 2012

В моем приложении я показываю карту Google с указателем.Я отправил приложение в market и проверил его, загрузив с маркета.

Карта по умолчанию отображается в гибридном представлении.Обычно карта выглядит хорошо, но когда я пытаюсь увеличить масштаб, на карте появляется пустой фон, как показано на следующем рисунке enter image description here

Ниже приведен код моей карты:

class MapOverlay extends com.google.android.maps.Overlay {
    public boolean draw(Canvas canvas, MapView mapView,boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);
        Point screenPts = new Point();

        mapView.getProjection().toPixels(p, screenPts);
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pin);            
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-100, null);         
        return true;
    }
} 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);

    Map = (ImageButton)findViewById(R.id.MapBtn);
    Hybrid = (ImageButton)findViewById(R.id.hybridBtn);

    mapView = (MapView) findViewById(R.id.mapView);
    mapView.setSatellite(true);

    mapController = mapView.getController(); 

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.getProvider(LocationManager.GPS_PROVIDER);

    Criteria criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 

    String bestProvider = locationManager.getBestProvider(criteria, true);      
    p = new GeoPoint((int) (latPt * 1E6),(int) (lngPt * 1E6));

    mapController.animateTo(p);
    mapController.setZoom(16); 
    mapView.invalidate();
    mapView.setTraffic(true);
    mapController = mapView.getController();

    MapOverlay mapOverlay = new MapOverlay();
    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(mapOverlay);
}

Манифест:

<manifest xmlns:android="schemas.android.com/apk/res/android"; 
    package="com.app.ig.sap"
    android:versionCode="2"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:anyDensity="true"/>

    <uses-feature android:name="android.hardware.camera"/> 

    <application
        android:icon="@drawable/q_icon"
        android:theme="@android:style/Theme.Light"
        android:label="@string/app_name"
        android:debuggable="false"> 

        <uses-library android:name="com.google.android.maps" />

        <activity android:name=".SplashScreen">
            <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.CAMERA"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

Может кто-нибудь объяснить мне, почему карта выглядит так, когда она масштабируется?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Siva на основе вашего ответа на мои комментарии это не из-за того, что изображения недоступны на серверах Google, а скорее из-за задержки в сети.Вероятно, для тайлов загрузки изображений есть тайм-аут - таким образом, с задержкой вы видите серые тайлы (как заменители, что по крайней мере лучше, чем пустой экран).Вы можете адаптировать свой код для проверки соединения пользователя и отобразить сообщение для пользователя, информирующее его о том, что у него медленное соединение и что карта может отображаться неправильно.

0 голосов
/ 02 февраля 2012

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

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