Android : Google Maps API V2 显示黑屏 ECLIPSE
Posted
技术标签:
【中文标题】Android : Google Maps API V2 显示黑屏 ECLIPSE【英文标题】:Android : Google Maps API V2 displays black screen ECLIPSE 【发布时间】:2019-01-06 19:23:51 【问题描述】:我试图在谷歌地图上显示我的当前位置,但它在地图片段中显示黑屏。
我的清单文件
<?xml version="1.1" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.edraky.tasksheet"
android:versionCode="13"
android:versionName="6.7" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="26" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<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" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.edraky.tasksheet.MAPS_RECEIVE" />
<permission
android:name="com.edraky.tasksheet.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.edraky.tasksheet.permission.MAPS_RECEIVE" />
<application
android:allowBackup="true"
android:icon="@drawable/transparentlogo"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SplashScreenActivity"
android:label="@string/app_name" >
</activity>
<activity
android:name=".LoginActivity"
android:label="@string/title_activity_login" >
</activity>
<activity
android:name=".ContactUs_Activity"
android:label="@string/title_activity_contact_us" >
</activity>
<activity
android:name=".AboutUs_Activity"
android:label="@string/title_activity_about_us_"
android:noHistory="false" >
</activity>
<activity
android:name=".WelcomePage"
android:label="@string/title_activity_welcome_page" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDpP-HMGNQCnFPnzODgTiJFXs00yirfhHE" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
</manifest>
ContactUs 布局(显示地图的布局)
联系我们布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.edraky.tasksheet.ContactUsActivity">
<TextView
android:id="@+id/textView1"
android:layout_
android:layout_marginTop="40dp"
android:layout_
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:textStyle="bold|italic"
android:textSize="11dp"
android:textIsSelectable="true" />
<fragment
android:id="@+id/map"
android:layout_
android:layout_
android:layout_alignLeft="@+id/textView1"
android:layout_alignParentBottom="true"
android:layout_below="@+id/textView1"
android:layout_marginTop="24dp"
class="com.google.android.gms.maps.SupportMapFragment"
android:scrollbars="vertical" />
<Button
android:id="@+id/homebutton"
android:layout_
android:layout_
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/contactusicon" />
</RelativeLayout>
联系我们活动课
public class ContactUs_Activity extends FragmentActivity
GoogleMap mMap;
GPSTracker gps;
Double currLat;
Double currLong;
GMapV2Direction gmap;
Button homebutton;
TextView view1;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_us);
homebutton = (Button) findViewById(R.id.homebutton);
view1 = (TextView) findViewById(R.id.textView1);
view1.setText("Text Shown");
homebutton.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
onBackPressed();
);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mMap = mapFragment.getMap();
gps = new GPSTracker(this);
currLat = gps.getLatitude();
currLong = gps.getLongitude();
LatLng sydney = new LatLng(currLat, currLong);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
我包含了所有库并生成了 API 密钥
输出如下所示
没有记录错误消息。显示地图可能会出什么问题?
注意:相同的代码在另一个应用程序上运行,当然,地图显示正确。
重要提示:在添加 Maps SDK API 之前,该应用已在 google play store 上发布,那么考虑到这一点或无关紧要,我应该做任何修改吗?
【问题讨论】:
【参考方案1】:转到 console.google.com 并生成一个新的 API 密钥,其包名称(com.package.app)与您的移动应用和 SHA1 中的相同。
获取新的 API 密钥,在代码中替换。卸载应用并重新运行。
【讨论】:
谢谢,我试过了,但是没用考虑到这一点还是无关紧要的?【参考方案2】:好的,所以我没有使用FragmentActivity
,这可能无法直接说明解决方案。
但这段代码确实有效,并使用android.support.v4.app.Fragment
显示地图。
import android.support.v4.app.Fragment;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.OnMapReadyCallback;
public class OrderMapFrag extends Fragment implements OnMapReadyCallback
private GoogleMap mGoogleMap;
private MapView mMapView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_order_map, container, false);
........
........
mMapView.onCreate(savedInstanceState);
mMapView.onResume();
try
MapsInitializer.initialize(getActivity().getApplicationContext());
catch (Exception e)
e.printStackTrace();
mMapView.getMapAsync(this);
return view;
@Override
public void onMapReady(GoogleMap googleMap)
mGoogleMap = googleMap;
//setting initial elements in map if required after this , as map got initialized properly
但我没有使用与您在 Manifest 中使用的完全相同的元素和权限。对我来说,这些是用过的。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="MY API KEY"/>
【讨论】:
以上是关于Android : Google Maps API V2 显示黑屏 ECLIPSE的主要内容,如果未能解决你的问题,请参考以下文章
Google Geolocation API 和 Google Maps Android SDK
Android:使用 Google API 获取实时方向,还是与 Google Maps 通信?
Android Manifest 未向 Google Maps 提供 API 密钥
为 Google Maps API v2 Android 发布流媒体方向