Android中的谷歌地图键?

Android中的谷歌地图键?,android,google-maps,Android,Google Maps,我正在开发一个android应用程序,其中我必须显示地图视图,我在以前的应用程序中做过一次,但我在以前的应用程序中使用的键在他的应用程序中不起作用。 它只是在应用程序中以空白屏幕显示pin。 我是否必须为每个项目使用不同的地图密钥,如果没有,请帮助我如何在这个项目中使用我以前的密钥。 我还试着生成一个新的密钥,但返回了相同的密钥 这是我使用的代码 public void onCreate(Bundle savedInstanceState) { super.onCre

我正在开发一个android应用程序,其中我必须显示地图视图,我在以前的应用程序中做过一次,但我在以前的应用程序中使用的键在他的应用程序中不起作用。 它只是在应用程序中以空白屏幕显示pin。 我是否必须为每个项目使用不同的地图密钥,如果没有,请帮助我如何在这个项目中使用我以前的密钥。 我还试着生成一个新的密钥,但返回了相同的密钥

这是我使用的代码

  public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map);
        btn=(Button)findViewById(R.id.mapbtn);
        str1=getIntent().getStringExtra("LATITUDE");
        str2=getIntent().getStringExtra("LONGITUDE");





        mapView =  (MapView)findViewById(R.id.mapView1);
        //View zoomView = mapView.getZoomControls(); 

        mapView.setBuiltInZoomControls(true);
         //mapView.setSatellite(true);
         mc = mapView.getController();
         btn.setOnClickListener(this);

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


            String coordinates[] = {str1,  str2};
            double lat = Double.parseDouble(coordinates[0]);
            double lng = Double.parseDouble(coordinates[1]);

            p = new GeoPoint(
                (int) (lat * 1E6), 
                (int) (lng * 1E6));

            mc.animateTo(p);
            mc.setZoom(17); 
            mapView.invalidate();

        //mp.equals(o);
    }
    @Override
    protected boolean isRouteDisplayed() {
        // TODO Auto-generated method stub
        return false;
    }
    class MapOverlay extends com.google.android.maps.Overlay
    {
        @Override
        public boolean draw(Canvas canvas, MapView mapView, 
        boolean shadow, long when) 
        {
            super.draw(canvas, mapView, shadow);                   
            Paint mPaint = new Paint();
            mPaint.setDither(true);
            mPaint.setColor(Color.RED);
            mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            mPaint.setStrokeJoin(Paint.Join.ROUND);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStrokeWidth(2);

            //---translate the GeoPoint to screen pixels---
            Point screenPts = new Point();
            mapView.getProjection().toPixels(p, screenPts);

            //---add the marker---
            Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pin);            
            canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);         
            return true;
        }
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.map);
btn=(按钮)findViewById(R.id.mapbtn);
str1=getIntent().getStringExtrade(“纬度”);
str2=getIntent().getStringExtra(“经度”);
mapView=(mapView)findViewById(R.id.mapView1);
//View zoomView=mapView.GetZoomControl();
mapView.SetBuilTinZoomControl(真);
//mapView.setSatellite(真);
mc=mapView.getController();
btn.setOnClickListener(此);
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
字符串坐标[]={str1,str2};
double lat=double.parseDouble(坐标[0]);
double lng=double.parseDouble(坐标[1]);
p=新的地质点(
(内部)(纬度*1E6),
(国际)(液化天然气*1E6));
司马迁(p),;
mc.setZoom(17);
mapView.invalidate();
//mp等于(o);
}
@凌驾
受保护的布尔值isRouteDisplayed(){
//TODO自动生成的方法存根
返回false;
}
类MapOverlay扩展了com.google.android.maps.Overlay
{
@凌驾
公共布尔绘制(画布、地图视图、地图视图、,
布尔阴影(长时)
{
super.draw(画布、地图视图、阴影);
Paint mPaint=新油漆();
mPaint.setDither(true);
mPaint.setColor(Color.RED);
mPaint.setStyle(绘制、样式、填充和笔划);
mPaint.setStrokeJoin(油漆.连接.圆形);
mPaint.setStrokeCap(油漆盖圆形);
mPaint.设定行程宽度(2);
//---将地质点转换为屏幕像素---
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
//---添加标记---
位图bmp=BitmapFactory.decodeResource(getResources(),R.drawable.pin);
canvas.drawBitmap(bmp,screenPts.x,screenPts.y-50,null);
返回true;
}

谢谢….

映射密钥仅限于一台机器,因为它包括Java库、JDK和所有文件,因此debug.keystore也是一个文件,因此您将始终获得唯一的映射密钥

只有在移动计算机(CPU)或重新安装操作系统时,您才需要生成新的映射键

另一个建议是删除覆盖代码并再次检查它是否工作正常。或者覆盖类中存在问题。清理并重建应用程序

希望您也已授予这些权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

映射密钥仅限于一台机器,因为它包括Java库、JDK和所有文件,因此debug.keystore也是一个文件,因此您将始终获得唯一的映射密钥

只有在移动计算机(CPU)或重新安装操作系统时,您才需要生成新的映射键

另一个建议是删除覆盖代码并再次检查它是否工作正常。或者覆盖类中存在问题。清理并重建应用程序

希望您也已授予这些权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


您是否尝试在emulator上运行应用程序?如果是,则使用默认密钥;如果您注销apk,然后在设备上运行,则使用与上次应用程序相同的密钥进行签名,并使用生成的google map api密钥。 您是否将网格作为输出??
您尝试在emulator上运行应用程序可能有两个原因:密钥或internet(internet over proxy)

如果是,则使用默认密钥,如果您正在注销apk,然后在设备上运行,则使用与上次应用程序相同的密钥进行签名,并使用生成的google map api密钥。 您是否将网格作为输出??
两个可能的原因是key或internet(internet over proxy)

map未显示的一个原因可能是您正在使用用于开发的release key将其替换为调试键map未显示的一个原因可能是您正在使用用于开发的release key将其替换为调试键