我正在创建一个使用谷歌地图 API v2 的 Android 应用程序。
我相信我已经按照谷歌教程所述完成了所有操作,但我仍然只得到谷歌地图网格(没有地图)。我使用 keystore.debug 的 SHA1 创建了一个调试密钥。
以下是我的设置:
Eclipse java编译器版本1.7
项目java编译器版本1.6
应用清单:
<manifest ...>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="my.app.test.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application>
<activity>
...
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="xxxxxxxxxxxxxxxxxxxxxxxxxx"/>
<uses-library android:name="com.google.android.maps"/>
</application>
</manifest>
Map xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/BackGroundColor"
android:orientation="vertical"
tools:context=".test" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingRight="10dp"
android:paddingTop="5dp" >
<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="xxxxxxxxxxxxxxxxxxxxxxxxxx" >
</com.google.android.maps.MapView>
</LinearLayout>
</LinearLayout>
地图活动:
public class Map extends MapActivity {
MapView mapView;
MapController mc;
GeoPoint p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_map);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setStreetView(true);
mc = mapView.getController();
String coordinates[] = {"1.352566007", "103.78921587"};
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();
}
@Override
protected boolean isRouteDisplayed() { return false; }
}
我知道有很多帖子都有同样的问题。我已经全部读完了!
我已经创建了几次密钥,但仍然一样......
任何想法出了什么问题,我只看到网格?该应用程序对 AVD 以及 Android 版本 2.2.1 的三星手机具有相同的结果
如果您为 API V2 编写应用程序,那么您使用了错误的对象,需要修复以下几件事:
1.删除这个:
<uses-library android:name="com.google.android.maps"/>
这是 Google Map API V1 的权限。
2.你必须添加这2个权限:
<permission android:name="your.application.package.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="your.application.package.permission.MAPS_RECEIVE"/>
change: your.application.package
到您当前的应用程序包。
3.当你瞄准SDK v8
,您必须向应用程序添加片段支持才能使用SupportMapFragment
来自 Google Map API V2,因此您需要添加google-support-v4
并将您的地图对象更改为SupportMapFragment
.
4. Your MapActivity
必须改为FragmentActivity
.
5.您可以在我撰写的关于如何将 Google Map API V2 添加到您的项目的博客文章中获取有关如何进行这些更改的更多信息:
谷歌地图 API V2 http://blog-emildesign.rhcloud.com/?p=435
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)