我是Android新手。我已经尝试了很多天来制作非常基本的谷歌地图应用程序,但还是无法完成它... 代码中没有错误,模拟器从终端运行正常,Map键也没问题,但我仍然无法看到地图。当我运行我的应用程序时,只显示网格并且不显示地图。这是代码,可以任何身体请帮助我。 我正在使用eclipse juno 4.2.1 api level 17,我想用谷歌地图api v2显示地图 我的代码在这里
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.googlemap"
android:versionCode="1"
android:versionName="2.0" >
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.googlemap.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="[API_KEY]"/>
<!-- <activity
android:name="com.example.googlemap.MainActivity"
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>
main.xml中
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"/>
MainActivity.java
package com.example.googlemap;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
protected boolean isRouteDisplayed() {
return false;
}
}
答案 0 :(得分:1)
您的清单文件正在使用Maps V2,而布局和活动正在使用Maps V1。您正在使用Maps V2 api密钥生成过程生成Maps API密钥,并将其设置为Maps V1 MapView。因此它不会显示,因为它会处理错误的API密钥。
您可以在V1密钥生成过程中生成API密钥,或者使用google-play-services_lib
项目并更改MapView和其他类。
答案 1 :(得分:0)
首先,请将此部分修改为以下内容。
<activity
android:name="com.example.googlemap.MainActivity"
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" />
你为什么阻止这部分?请立即激活此部分。
@@@
第二次,请将 main.xml 修改为以下内容;您必须指定布局文件名是“main.xml”还是“activity_main.xml”。
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
您必须使用上述代码。因为您在清单文件中设置了[android:minSdkVersion =“8”]。您的main.xml仅用于在针对Android API 12或更高版本的应用中测试您的设置。
@@@
第三次,请将您的 MainActivity,java 修改为以下内容;
public class MianActivity extends android.support.v4.app.FragmentActivity {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpMapIfNeeded();
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
private void setUpMapIfNeeded() {
if (mMap == null) {
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
if (mMap != null) {
setUpMap();
}
}
}
private void setUpMap() {
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
}
在Eclipse中,按键盘上的 Ctrl + Shift + O(字母)并执行“组织导入”,然后自动导入几个类。
上面#1到#3的代码是标准的基本代码格式,可以使用新的Google Maps API版本2在您的真实手机上查看Google地图。此代码会在地图上显示地图和标记
@@@
<强>四即可。最重要的是在项目中添加两个库:一个是 Google Play服务库,另一个是 Android-support-v4 。
如何将这两个库添加到项目中,请参阅this document : Click here。
如果您无法设置两个库,您无法在真实手机上看到地图。
@@@
五,尝试在您的真实设备(手机)上运行您的项目 ,不在Eclipse中的模拟器上。因为我们无法在模拟器上使用Google Play服务支持的新Google Maps API v2查看地图,Google's official document :click here。
@@@
我希望你能在真正的手机上看到Google地图。
答案 2 :(得分:0)
我也有类似的问题。这对我有用!
答案 3 :(得分:-1)
代码中没有错误,模拟器从终端运行正常
太棒了!但是窗口&gt;显示视图&gt;其他&gt; Android&gt; Logcat!
应用程序可能不会崩溃,但Map API会告诉您为什么地图无法在日志中显示。
确保你做得很好:
答案 4 :(得分:-1)
确保您有此设置:
map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
或任何你想要的类型......