-1

我想在 Android 中显示谷歌地图,我有地图 API,即使地图没有显示,也没有抛出任何错误。我使用了以下 Java 代码

public class GoogleMapActivity extends MapActivity {
    private Location myLocation;
    protected MapView myMapView = null;
    protected LocationManager myLocationManager = null;
    protected MapController mapController;
    List<Overlay> mapOverlays;

    protected boolean isRouteDisplayed() {
        return false;
    }

    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        this.myMapView = new MapView(this, "0jzIB6m5R1kLa_rGte-DS9PhF3KlSgqYHUZognA");    
        this.setContentView(myMapView);
        myMapView.setBuiltInZoomControls(true);
        myMapView.setSatellite(true);
        mapController = myMapView.getController();
        mapOverlays = myMapView.getOverlays();
        this.myLocation = new Location("gps");
        this.myLocation.setLongitude(77.52436144125092);
        this.myLocation.setLatitude(13.05096452223662);
        updateView();
    }

    private void updateView() {
        Double lat = myLocation.getLatitude();
        Double lng = myLocation.getLongitude();
        GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
        mapController.setCenter(point);
    }
}

显现

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.googlemap"
    android:versionCode="1"
    android:versionName="1.0" >

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

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".GoogleMapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

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

</manifest>

最后我得到输出空白。请看下面的屏幕

图片

请建议我哪里错了

4

3 回答 3

0

我认为您尚未在当前布局中添加 myMapView ............

你用java代码创建的

this.myMapView = new MapView(this,
                "0jzIB6m5R1kLa_rGte-DS9PhF3KlSgqYHUZognA");

但看起来没有添加到任何布局中..根据链接

  1. 如果您通过其构造函数动态创建 MapView,您可以通过 Java 代码以这种方式提供 API 密钥,但是您需要将其动态添加到您的布局中。
  2. 您不能既在布局中拥有小部件,又在 Java 中设置 API 密钥。

解决方案:

  • 选项 1 - 为 XML 创建一个线性布局并在其中添加 myMapView。
  • 选项 2 - 在自己的 XML 中创建地图视图并通过 findViewById 获取。
于 2012-06-26T07:43:13.913 回答
0

尝试将 mapview 放置在布局 xml 上,并将其 api 键放在那里,然后在活动上获取地图的引用并正常继续。

带有 mapView 的 main.xml:

    <com.google.android.maps.MapView android:id="@+id/mapView"
     android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true"
     android:layout_centerInParent="true" android:clickable="true" android:apiKey="YOUR MAP KEY"/>

活动:

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView)findViewById(R.id.mapView);
于 2012-06-26T07:46:30.163 回答
0

下面的代码对我来说很好 -

public class MapTabView extends MapActivity 
{

    MapView map;

    String api = "02gY92RWvQgV-k5CUQvGPowJkw8HkN4Tmm-HDIQ";

    @Override
    protected void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);
        map = new MapView(this, api);
        map.setClickable(true);
        map.setEnabled(true);
        setContentView(map);
    }
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem menu_item)
    {
        switch (menu_item.getItemId()) {
        case R.id.satelite:
            map.setSatellite(true);
            map.setTraffic(false);
            break;

        case R.id.traffic:
            map.setTraffic(true);
            map.setSatellite(false);
            break;

        default:
            break;
        }
        return true;
    }
}

看看这个TabMapsExample

于 2012-06-26T07:51:22.580 回答