Android、谷歌地图赢得';不显示

Android、谷歌地图赢得';不显示,android,maps,Android,Maps,我正在制作一个应用程序,它需要显示一个我用纬度和经度定义的位置。一切正常,它会在我的应用程序屏幕上打开谷歌地图,但地图不会显示! 这是我使用的代码 public class MapsActivity extends MapActivity { MapView mapView; MapController mc; GeoPoint p; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta

我正在制作一个应用程序,它需要显示一个我用纬度和经度定义的位置。一切正常,它会在我的应用程序屏幕上打开谷歌地图,但地图不会显示! 这是我使用的代码

public class MapsActivity extends MapActivity {

MapView mapView;
MapController mc;
GeoPoint p;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //vraag custom title bar
    requestCustomTitle();
    setContentView(R.layout.mapsactivity);
    //Titel dynamisch invullen volgens taalvoorkeuren, roept methode setCustomTitle op
    setCustomTitle(getResources().getString(R.string.MapsTitel));


    showZoom();
    locate(getIntent().getStringExtra("kantoorLat"), getIntent().getStringExtra("kantoorLng"));
    addMarker();

}
/*
 * De methode showZoom zorgt ervoor dat de zoombuttons worden getoond
 */

private void showZoom(){
    mapView = (MapView) findViewById(R.id.mapView);
    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);
    View zoomView = mapView.getZoomControls();

    zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    mapView.displayZoomControls(true);
}

/*
 * De methode locate zorgt ervoor dat de juiste locatie wordt getoond
 */
private void locate(String strlat, String strlng){
    mc = mapView.getController();
    String coordinates[] = {strlat,strlng};
    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();
}

/*
 * De methode addMarker zorgt ervoor dat er een indicator staat op de locatie
 */
private void addMarker(){
    MapOverlay mapOverlay = new MapOverlay();
    List<Overlay> listOfOverlays = mapView.getOverlays();
    listOfOverlays.clear();
    listOfOverlays.add(mapOverlay);
}

protected boolean isRouteDisplayed(){
    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);

        Point screenPts = new Point();
        mapView.getProjection().toPixels(p,screenPts);

        Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.accentindicator);
        canvas.drawBitmap(bmp, screenPts.x+7, screenPts.y-19, null);
        return true;
    }
}
公共类MapsActivity扩展了MapActivity{
地图视图;
地图控制器;
地质点p;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//vraag自定义标题栏
requestCustomTitle();
setContentView(R.layout.mapsactivity);
//Titel dynamisch invullen volgens Taalvoorkuren,roept methode setCustomTitle op
setCustomTitle(getResources().getString(R.string.MapsTitel));
showZoom();
定位(getIntent().getStringExtra(“kantoorLat”)、getIntent().getStringExtra(“kantoorLng”);
addMarker();
}
/*
*显示Zoom zorgt ervoor数据的方法
*/
私有void showZoom(){
mapView=(mapView)findViewById(R.id.mapView);
LinearLayout zoomLayout=(LinearLayout)findViewById(R.id.zoom);
View zoomView=mapView.GetZoomControl();
添加视图(zoomView,新的LinearLayout.LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
mapView.DisplayZoomControl(真);
}
/*
*在wordt getoond的juiste位置找到zorgt ervoor数据的方法
*/
专用void locate(字符串strlat、字符串strlng){
mc=mapView.getController();
字符串坐标[]={strlat,strlng};
double lat=double.parseDouble(坐标[0]);
double lng=double.parseDouble(坐标[1]);
p=新地质点((内部)(纬度*1E6),(内部)(液化天然气*1E6));
司马迁(p),;
mc.setZoom(17);
mapView.invalidate();
}
/*
*方法添加标记器,用于标记位置上的指示器状态
*/
私有void addMarker(){
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapView.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
}
受保护的布尔值isRouteDisplayed(){
返回false;
}
类MapOverlay扩展了com.google.android.maps.Overlay{
@凌驾
公共布尔绘制(画布画布、地图视图、地图视图、布尔阴影、长时间){
super.draw(画布、地图视图、阴影);
点屏幕PTS=新点();
getProjection().toPixels(p,screenPts);
位图bmp=BitmapFactory.decodeResource(getResources(),R.drawable.accentindicator);
canvas.drawBitmap(bmp,screenPts.x+7,screenPts.y-19,空);
返回true;
}
}

在此处获取API密钥

在AndroidManifest中放入以下规则

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

在此处获取API密钥

在AndroidManifest中放入以下规则

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

查看以下博客条目,其中列出了可能导致此问题的原因。

除了活动之外,清单、布局或API键也可能无效

总之

  • Android SDK需要设置为 支持谷歌地图
  • 地图视图 组件需要添加到您的 布局,包含有效的Google 映射API密钥
  • 将要进行的活动 负责展示地图 需要从MapActivity扩展
  • 需要修改应用程序清单 使用 android.permission.INTERNET 许可
  • 应用程序清单 需要使用 com.google.android.maps库

在您的情况下,很可能是internet连接(清单中的permisson和/或emulator internet access)或API密钥无效。请记住,API密钥链接到用于签署APK的证书。

请查看以下博客条目,其中列出了可能导致此问题的原因。

除了活动之外,清单、布局或API键也可能无效

总之

  • Android SDK需要设置为 支持谷歌地图
  • 地图视图 组件需要添加到您的 布局,包含有效的Google 映射API密钥
  • 将要进行的活动 负责展示地图 需要从MapActivity扩展
  • 需要修改应用程序清单 使用 android.permission.INTERNET 许可
  • 应用程序清单 需要使用 com.google.android.maps库

在您的情况下,很可能是internet连接(清单中的permisson和/或emulator internet access)或API密钥无效。请记住,API密钥链接到用于签署APK的证书。

MD5密钥在不同的计算机上不起作用

您需要为正在使用的当前SDK生成MD5调试密钥


为当前计算机生成调试密钥并重试。

MD5密钥在不同的计算机上不起作用

您需要为正在使用的当前SDK生成MD5调试密钥


为当前计算机生成调试密钥,然后重试。

您需要获取在应用程序中访问谷歌地图的密钥,获取密钥后,您必须在ue清单文件中添加库,该文件将在获取密钥后自动安装。

您需要获取在应用程序中访问谷歌地图的密钥并在获取密钥后您必须在ue清单文件中添加库,当您获得密钥时,该文件将自动安装。

我认为这是您的模拟器版本问题。Android sdk 2.2模拟器有时不显示确切位置。请尝试运行emulator 2.1。

我认为这是您的模拟器版本问题。Android sdk 2.2模拟器有时不显示exact位置。尝试运行emulator 2.1。

即使使用谷歌API简介我也遇到过类似的问题

遵循了本教程,它对我很有用:


祝你好运,

即使使用谷歌API简介我也遇到过类似的问题

我紧随其后