gpt4 book ai didi

Android map 只显示网格不显示任何 map View

转载 作者:行者123 更新时间:2023-11-29 01:57:56 26 4
gpt4 key购买 nike

我正在开发小型 android 应用程序,我想在其中向用户显示 map 上的当前位置。出于这个原因,我正在使用谷歌地图 API。我遵循获取 map api key 所需的所有设置。我在 <.android/debug.keystore> 位置获取默认 keystore 。我从 SHA1 key 和 MD 5 key 等 key 中获取所有必需的值。然后在 Google API 控制台上,我使用 SHA1+package_name 获取 API key 。我还启用了 Google map API v2 服务。

现在在我的项目方面,我做了以下事情。

// in main.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:orientation="vertical" >

<TextView
android:id="@+id/myLocationText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello_world"
tools:context=".WhereAmI" />

<com.google.android.maps.MapView
android:id="@+id/myMapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:enabled="true"
android:clickable="true"
android:apiKey="AIzaSyD6EHgxObm01ooCF9DsMzOppJbNp8O2_j4"
/>

</LinearLayout>


// In manifest file

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

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

//mapactivity..........
public class mapview extends MapActivity {

private MapController mapController;

@Override
protected boolean isRouteDisplayed() {
return false;
}

private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);

}
public void onProviderDisabled(String provider)
{

}
public void onProviderEnabled(String provider)
{

}
public void onStatusChanged(String provider, int status,
Bundle extras)
{

}
};
LocationManager locationManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

MapView myMapView = (MapView)findViewById(R.id.myMapView);
mapController = myMapView.getController();
myMapView.setSatellite(true);
myMapView.setBuiltInZoomControls(true);
mapController.setZoom(17);

//LocationManager locationManager;
String svcName = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(svcName);

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setSpeedRequired(false);
criteria.setCostAllowed(true);
String provider = locationManager.getBestProvider(criteria, true);

//dis(provider);
//Location l = locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
Location l = locationManager.getLastKnownLocation(provider);

updateWithNewLocation(l);

locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);

}


private void updateWithNewLocation(Location location)
{
TextView myLocationText;
myLocationText = (TextView)findViewById(R.id.myLocationText);
String latLongString = "No location found";
String addressString = " No address found";
//Toast.makeText(this, "inside update location", Toast.LENGTH_SHORT).show();

if (location != null)
{
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "Lat:" + lat + "\nLong:" + lng;
Geocoder gc = new Geocoder(this, Locale.getDefault());
Double geoLat = location.getLatitude()*1E6;
Double geoLng = location.getLongitude()*1E6;
GeoPoint point = new GeoPoint(geoLat.intValue(),geoLng.intValue());
mapController.animateTo(point);

try {
List<Address> addresses = gc.getFromLocation(lat, lng, 1);
StringBuilder sb = new StringBuilder();
if (addresses.size() > 0) {
Address address = addresses.get(0);
for (int i = 0; i < address.getMaxAddressLineIndex(); i++)
sb.append(address.getAddressLine(i)).append("\n");
sb.append(address.getLocality()).append("\n");
sb.append(address.getPostalCode()).append("\n");
sb.append(address.getCountryName());
}
addressString = sb.toString();
} catch (IOException e) {}

myLocationText.setText("Your Current Position is:\n" +
latLongString + "\n\n" + addressString);

}

}

@Override
public void onDestroy()
{
super.onDestroy();
locationManager.removeUpdates(locationListener);
}

}

现在我的问题是,当我在模拟器或设备上运行此应用程序时,它会为我提供正确的坐标和位置,但不会显示 map View 。它仅显示灰色 GridView 。我知道有很多关于同一问题的重复问题,但我仍然无法解决这个问题。我还创建了自定义调试 key 并使用该 key 的 SHA1 值,但输出没有变化。有什么办法可以解决这个问题吗...需要帮忙...谢谢...

最佳答案

如果您无法下载 map ,可能是以下两个问题之一:

1) 您正在使用已弃用的 API 版本。2) 您没有快速的互联网连接。

您显示的代码使用的是 API v1,而您使用的是 API v2 的 key 。我不确定这是否有效,但使用带有 v2 key 的 API v2 肯定有效。看这里here .还使用 fragment 而不是 Mapview。

也可以在真实设备上尝试,因为模拟器存在一些问题,如图所示 here

关于Android map 只显示网格不显示任何 map View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14135166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com