Android-放大混合设置,谷歌地图只显示空背景

Android-放大混合设置,谷歌地图只显示空背景,android,google-maps,zooming,hybrid,Android,Google Maps,Zooming,Hybrid,在我的应用程序中,我显示了一个带有指针的谷歌地图。我已经在market中提交了应用程序,并通过从market下载进行了检查 默认情况下,地图显示在混合视图中。通常情况下,地图看起来不错,但当我尝试放大时,地图显示一个空背景,如下图所示 以下是我的地图代码: class MapOverlay extends com.google.android.maps.Overlay { public boolean draw(Canvas canvas, MapView mapView,boolea

在我的应用程序中,我显示了一个带有指针的谷歌地图。我已经在
market
中提交了应用程序,并通过从market下载进行了检查

默认情况下,地图显示在混合视图中。通常情况下,地图看起来不错,但当我尝试放大时,地图显示一个空背景,如下图所示

以下是我的地图代码:

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);
}
class MapOverlay扩展了com.google.android.maps.Overlay{
公共布尔绘制(画布画布、地图视图、地图视图、布尔阴影、长时间){
super.draw(画布、地图视图、阴影);
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
位图bmp=BitmapFactory.decodeResource(getResources(),R.drawable.pin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-100,空);
返回true;
}
} 
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
Map=(ImageButton)findviewbyd(R.id.MapBtn);
Hybrid=(ImageButton)FindViewByd(R.id.hybridBtn);
mapView=(mapView)findViewById(R.id.mapView);
mapView.setSatellite(真);
mapController=mapView.getController();
locationManager=(locationManager)getSystemService(Context.LOCATION\u服务);
locationManager.getProvider(locationManager.GPS\U PROVIDER);
标准=新标准();
标准.设定准确度(标准.准确度/精细度);
字符串bestProvider=locationManager.getBestProvider(条件为true);
p=新的地质点((int)(latPt*1E6),(int)(lngPt*1E6));
mapController.animateTo(p);
mapController.setZoom(16);
mapView.invalidate();
mapView.setTraffic(true);
mapController=mapView.getController();
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
}
舱单:

<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>


有人能解释一下为什么地图在缩放时是这样的吗?

AFAIK这意味着你要求的缩放级别在谷歌地图服务器上不可用,因为您要求的卫星图像在该缩放级别不可用。

Siva根据您对我的评论的回复,这不是因为图像在谷歌服务器上不可用,而是因为网络延迟。加载图像分片可能会有一个超时时间——因此,在延迟情况下,您会看到灰色分片(作为替代品,这至少比空白屏幕要好)。您可以调整代码以测试用户的连接,并向用户显示一条消息,通知他们连接速度慢,并且映射可能无法正确呈现。

您可以发布AndroidManifest.xml的外观吗?以下是我的清单文件。。。我认为您需要发布一个新问题,供android开发人员回答。:-)