谷歌地图显示灰瓦不仅没有地图 [英] Google maps shows grey tiles only not map

查看:162
本文介绍了谷歌地图显示灰瓦不仅没有地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在使用谷歌地图API V2从过去的4天,但越来越未能显示谷歌地图,但只显示青瓦。日食不显示在运行在模拟器和实际设备应用程序的任何错误(连接到PC的模拟器),我已经提到.The API密钥(代替我的API密钥)是一个我通过显示调试证书指纹得到。任何人都请。帮帮我!先谢谢了。

I have been working with Google Maps API v2 from the past 4 days but getting failed in displaying Google Maps but display only grey tiles. Eclipse don't show any error while running the app in emulator and on real device( connected to PC as emulator).The API key I have mentioned(in place of my api key) is the one I got by displaying the debug certificate fingerprint. Anyone Pls. help! Thanks in advance.

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.VertexVerveInc.GPSLocator"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
     android:allowBackup="true"
    android:icon="@drawable/icon" 
    android:label="@string/app_name">
    <uses-library android:name="com.google.android.maps"/>
    <activity
        android:name="GPSLocatorActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
       </activity>
      </application>

    </manifest>

main.xml中的文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:orientation="vertical"
 android:layout_width="fill_parent"  
 android:layout_height="fill_parent">
<com.google.android.maps.MapView 
android:id="@+id/mapView"  
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:enabled="true" 
android:clickable="true" 
android:apiKey="my api key"
/>
</LinearLayout>

GPSLocatorActivity.java文件

package com.VertexVerveInc.GPSLocator;


import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapController;
import com.google.android.maps.GeoPoint;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;

import android.location.Geocoder;
import android.location.Address;

import com.google.android.maps.Overlay;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

import java.util.List;
import java.util.Locale;
import java.io.IOException;

import android.os.Bundle;
import android.widget.Toast;

public class GPSLocatorActivity extends MapActivity {

private MapView mapView;
private MapController mapController;

private LocationManager locationManager;
private LocationListener locationListener;

@SuppressWarnings( "deprecation" )

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

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

    locationListener = new GPSLocationListener();

    locationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 
        0, 
        0, 
        locationListener);

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

    // enable Street view by default
    mapView.setStreetView(true);

    // enable to show Satellite view
     mapView.setSatellite(true);

    // enable to show Traffic on map
     mapView.setTraffic(true);
    mapView.setBuiltInZoomControls(true);

    mapController = mapView.getController();
    mapController.setZoom(16); 
}

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

private class GPSLocationListener implements LocationListener 
{
    @Override
    public void onLocationChanged(Location location) {
        if (location != null) {
            GeoPoint point = new GeoPoint(
                    (int) (location.getLatitude() * 1E6), 
                    (int) (location.getLongitude() * 1E6));

            /* Toast.makeText(getBaseContext(), 
                    "Latitude: " + location.getLatitude() + 
                    " Longitude: " + location.getLongitude(), 
                    Toast.LENGTH_SHORT).show();*/

            mapController.animateTo(point);
            mapController.setZoom(16);

            // add marker
            MapOverlay mapOverlay = new MapOverlay();
            mapOverlay.setPointToDraw(point);
            List<Overlay> listOfOverlays = mapView.getOverlays();
            listOfOverlays.clear();
            listOfOverlays.add(mapOverlay);

            String address = ConvertPointToLocation(point);
            Toast.makeText(getBaseContext(), address, Toast.LENGTH_SHORT).show();

            mapView.invalidate();
        }
    }

    public String ConvertPointToLocation(GeoPoint point) {   
        String address = "";
        Geocoder geoCoder = new Geocoder(
                getBaseContext(), Locale.getDefault());
        try {
            List<Address> addresses = geoCoder.getFromLocation(
                point.getLatitudeE6()  / 1E6, 
                point.getLongitudeE6() / 1E6, 1);

            if (addresses.size() > 0) {
           for (int index = 0; index <                                   addresses.get(0).getMaxAddressLineIndex(); index++)
                    address += addresses.get(0).getAddressLine(index) + " ";
            }
        }
        catch (IOException e) {                
            e.printStackTrace();
        }   

        return address;
    } 

    @Override
    public void onProviderDisabled(String provider) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

class MapOverlay extends Overlay
{
    private GeoPoint pointToDraw;

    public void setPointToDraw(GeoPoint point) {
        pointToDraw = point;
    }

    public GeoPoint getPointToDraw() {
        return pointToDraw;
    }

    @Override
    public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
        super.draw(canvas, mapView, shadow);                   

        // convert point to pixels
        Point screenPts = new Point();
        mapView.getProjection().toPixels(pointToDraw, screenPts);

        // add marker
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.red);
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 24, null); // 24 is the      height of image        
        return true;
    }
} 

}

推荐答案

如果您使用签名的APK,调试的主要出口方式,在地图上看起来在真实设备的空白。您正在使用未签名的apk文件,即调试的关键。如果导出APK,使用释放键。

If you use signed apk, debug key export means,the map looks blank in real device. You are using unsigned apk, ie debug key. if you export apk, use release key.

https://developers.google.com/maps/documentation/android/start#the_google_maps_api_key

发行证书指纹给出。

和一些权限缺少manifest.please补充说。

And some permissions are missing in manifest.please add that.

    <uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
    <permission
    android:name="com.VertexVerveInc.GPSLocator.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="com.VertexVerveInc.GPSLocator.permission.MAPS_RECEIVE" />

和布局,你正在使用的地图V1,切换到地图V2。

And in layout,you are using map v1, switch over to map v2.

      <fragment  
      android:id="@+id/map"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
       android:layout_below="@id/rg_views"
      android:name="com.google.android.gms.maps.SupportMapFragment"
      />

http://www.vogella.com/articles/AndroidGoogleMaps/article.html

这篇关于谷歌地图显示灰瓦不仅没有地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆