我已经检查并仔细检查了我在Google控制台上注册的API密钥但是我仍然收到以下错误:
12-05 16:31:12.940: E/Google Maps Android API(12334): Failed to load map. Could not contact Google servers.
Run Code Online (Sandbox Code Playgroud)
我所看到的是放大/缩小按钮和MapView的背景但没有Map ??? !!!
有任何想法吗???
回答
我将在此发布,因为解决了我的问题的原因已在下面接受的答案的评论中说明.
这是READ_GSERVICES许可.出于某种原因,在开发人员网站上使用它们时未提及该权限.
我想让谷歌地图v2在我的应用程序中工作.我已经看到几个示例显示如何在活动中打开SupportMapFragment.这个想法是你的活动将调用setContentView(R.layout.map_layout);map_layout.xml链接到片段的行:
android:name="com.google.android.gms.maps.SupportMapFragment"
xmlns:map="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)
"name ="行有效地表示"此布局由"SupportMapFragment"类型的片段控制.
我的复杂之处在于我试图让地图显示在带有标签的活动中(使用actionbarsherlock实现).这意味着对应于选项卡选择的任何片段都必须实现TabListener.但是SupportMapFragment没有.所以现在我想要创建一个像这样的新片段:
public class MyMapFragmentWithTabListener extends SupportMapFragment implements TabListener
{
Run Code Online (Sandbox Code Playgroud)
但是现在我对如何编写MapFragmentWithTabListener的内容特别是onCreateView感到困惑...我应该夸大一些布局吗?当然,我不能从示例中充分膨胀相同的map_layout.xml,因为它已经声明它由SupportMapFragment控制,而在此实现中它应该由MyMapFragmentWithTabListener控制 - 我是否需要稍微不同的xml文件来充气(如果它应该是什么样子?) - 或者我应该以编程方式创建我的视图?
我已经按照使用 ActionBarSherlock 和新 SupportMapFragment 中的步骤来使用新的 Google Maps Android v2 API,但是我遇到了一些导致应用程序在启动时崩溃的错误。
我在我的应用程序上使用 Maven,所以我也发布了我的 AndroidManifest 和 POM 文件。
你能帮我吗?
这是来自 logcat 的错误:
12-22 14:35:41.319: 错误/AndroidRuntime(8565): 致命异常: main java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable at com.google.android.gms.maps.GoogleMapOptions。 createFromAttributes(Unknown Source) at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:269) at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:563) at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) at android.view.LayoutInflater.inflate(LayoutInflater.java:408) at android.view.LayoutInflater.inflate(LayoutInflater.java: 320) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:276) 在 com.actionbarsherlock.internal。ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:853) at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262) at br.com.myapp.activities.MainActivity.onCreate(MainActivity.java:19) at android.app .Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500 (ActivityThread.java:117) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper. java:130) 在 android.app.ActivityThread。main(ActivityThread.java:3687) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) …
我已经按照这个问题的接受答案的指导实施ActionBarSherlock了.一切都很好.但唯一的问题是该方法被调用两次.这是代码 - SupportMapFragmentonOptionsItemSelected
@Override
public boolean onOptionsItemSelected(
com.actionbarsherlock.view.MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation:
Log.d("tag","text");
break;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
编辑-
这是我的FragmentMaps全班:
package com.vishalaksh.technex;
import android.database.Cursor;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.SubMenu;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.CancelableCallback;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.vishalaksh.technex.db.DatabaseHelper;
import com.vishalaksh.technex.db.DbConstants;
import com.vishalaksh.technex.utils.Constants;
import com.vishalaksh.technex.utils.JSONconstants;
import com.vishalaksh.technex.utils.MapConstants;
import com.vishalaksh.technex.utils.SherlockMapFragment; …Run Code Online (Sandbox Code Playgroud) 我正在尝试实施Google地图显示,下面是我的代码:
package com.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
public class MapFragment extends SherlockMapFragment {
private GoogleMap mMap;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, container, savedInstanceState);
SupportMapFragment mapFrag= (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map);
mMap = mapFrag.getMap();
return root;
}
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,getSupportFragmentManager()未定义类型MapFragment.但是我有点困惑,因为我导入了com.google.android.gms.maps.SupportMapFragment.那个方法不应该来自那里吗?我错过了让这种方法起作用的一些步骤吗?
我一直在处理这个问题一段时间了.我使用这个问题作为参考: 使用ActionBarSherlock和New SupportMapFragment
我目前正在使用ActionBarSherlock,我正在使用Vipul Shah相当简单的地图实现.它的工作非常出色,完全符合我的需要.但是,在Orientation更改时,整个应用程序崩溃.这是我的日志:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.meetball_1/com.meetball_1.HomeActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3740)
at android.app.ActivityThread.access$700(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:133)
at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:261)
at …Run Code Online (Sandbox Code Playgroud)