0

在这段代码中我有一些问题,在这里我无法访问谷歌地图,方形框代替地图出现。谁能帮我解决这个问题。

GPSApp.java 类

包 com.android.gpsapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;

 public class GPSApp extends MapActivity
 {
  MapView mapView; 
  MapController mc;
  GeoPoint p;

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

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

    LinearLayout zoomLayout = (LinearLayout)findViewById(R.id.zoom);  
    View zoomView = mapView.getZoomControls(); 

    zoomLayout.addView(zoomView, new LinearLayout.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT)); 

    mapView.displayZoomControls(true);

    mc = mapView.getController();

    String coordinates[] = {"26.456435","80.330606"};
    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();

    mapView.setSatellite(true);
    mapView.setStreetView(true);
    mapView.setTraffic(true);
}

  @Override
   protected boolean isRouteDisplayed() {
     // TODO Auto-generated method stub
      return false;
    }
 }

Main.xml 和 API_key 我已经给出

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

   <LinearLayout android:id="@+id/zoom" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    /> 

   <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="API_Key"
   /> 

</RelativeLayout>

AndroidManifes.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.gpsapp"
     android:versionCode="1"
     android:versionName="1.0">
    <application android:label="@string/app_name" >

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

    <activity android:name="GPSApp" 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>
  <uses-permission android:name="android.permission.INTERNET" />
</manifest> 
4

3 回答 3

0

我在这里能想到的主要问题是您正在尝试实现Google Maps API V1,而当前的 Google Maps API 版本是 2。因此,在这种情况下,您描述的问题要么是您尝试将 Google Maps API V2 密钥与 Google Maps API V1 一起使用将发生(没有地图,只有带有缩放控件的正方形)

如果您确实生成了 API V1 密钥(我真的很怀疑...),那么问题可能出在您在 Google API 控制台中定义应用程序的方式上。

无论如何,我建议您迁移到 Google API v2,因为 API V1 已被弃用。

这是我写的关于如何在您的应用程序中实现 Google Maps API V2 的博客文章:

谷歌地图 API V2

于 2013-06-24T11:38:52.113 回答
0

您可以尝试<uses-permission>使用 before <application>,因为 Android 曾经对这类事情很挑剔。

如果这没有帮助,请尝试在模拟器或设备上运行地图应用程序。如果它表现出同样的问题,那么问题在于您从 Google 下载地图信息的能力。

如果 Maps 应用程序有效,而您的应用程序无效,则您的 API 密钥不正确,例如尝试在 Maps V1 应用程序上使用 Maps V2 API 密钥。您的代码是为 Maps V1 设置的,您无法再获取 Maps V1 API 密钥。您应该考虑改用 Maps V2,因为 Maps V1 已正式弃用。

于 2013-06-24T11:34:11.343 回答
0

尝试扩展 FragmentActivity

public class Maps extends FragmentActivity {
    GoogleMap map;
    double lat;
    double lan;
    boolean flag = false;

    // private LocationManager lm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapptry);

        map = ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMap();
             }
        }
于 2013-06-24T11:33:12.930 回答