硬编码onCreate()中的setZoom()感觉非常陈旧,我想通过最初使MapView设置缩放直到所有GeoPoints/OverlayItems在地图上可见来增强用户体验.
怎么能自动神奇地完成?
我想将地图视图缩放到1公里半径,但无法弄清楚如何?
该文档说缩放级别1将地球赤道映射到256像素.那么如何计算我需要设置的缩放级别,以便地图视图显示1KM半径的区域?
更新:
阅读几篇博文后,我写了以下代码:
private int calculateZoomLevel() {
double equatorLength = 6378140; // in meters
double widthInPixels = screenWidth;
double metersPerPixel = equatorLength / 256;
int zoomLevel = 1;
while ((metersPerPixel * widthInPixels) > 2000) {
metersPerPixel /= 2;
++zoomLevel;
}
Log.i("ADNAN", "zoom level = "+zoomLevel);
return zoomLevel;
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,首先我在缩放级别1中计算每像素的米数,根据谷歌显示使用256像素的地球赤道.现在,每个后续缩放级别放大2级,因此每个缩放级别的每个像素的一半.我这样做,直到我有一个缩放级别,每个像素的米乘以屏幕宽度给我小于2000,即2公里跨.
但我不认为我得到的缩放级别显示的是2Km半径的地图.有人可以告诉我这里我做错了什么吗?
最后更新
原始问题
使用旧版Google Maps Android API,我能够捕获谷歌地图的屏幕截图,通过社交媒体分享.我使用以下代码捕获屏幕截图并将图像保存到文件中并且效果很好:
public String captureScreen()
{
String storageState = Environment.getExternalStorageState();
Log.d("StorageState", "Storage state is: " + storageState);
// image naming and path to include sd card appending name you choose for file
String mPath = this.getFilesDir().getAbsolutePath();
// create bitmap screen capture
Bitmap bitmap;
View v1 = this.mapView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
OutputStream fout = null;
String filePath = System.currentTimeMillis() + ".jpeg";
try
{
fout = openFileOutput(filePath,
MODE_WORLD_READABLE);
// Write the string …Run Code Online (Sandbox Code Playgroud) 02-18 00:02:08.432: ERROR/PackageManager(57): Package com.example.brown requires unavailable shared library com.google.android.maps; failing!
我在logcat中遇到了这个异常.
谁能指导我?
我想在地图中心更改后立即对地址进行地理编码.
如何使用适用于Android V2的新Google地图处理地图moveend?(我正在谈论案例,然后用户通过手指拖动地图)
android google-maps android-mapview google-maps-android-api-2
我不确定我是应该使用MapView还是坚持使用MapFragment.我的应用程序是一个应用程序,可以找到离您最近的最近的一组位置.我希望能够在按下标记时添加位置,显示标记的详细信息,以及当用户沿着地图移动时我希望能够获取地图中心的坐标并显示定义中的最近位置半径.如果我继续使用,MapFragments或者MapView在我还有机会的时候切换到,我会处于不利地位吗?
android google-maps android-mapview mapfragment google-maps-android-api-2
我的片段中有地图视图.我需要刷新地图并根据条件添加不同的标记.因此,我应该在添加新标记之前从地图中删除最后一个标记.
实际上,几周前应用程序工作正常,突然发生了.我的代码是这样的:
private void displayData(final List<Venue> venueList) {
// Removes all markers, overlays, and polylines from the map.
googleMap.clear();
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
上次它工作正常(在2013年I/O中由Android团队宣布新的Google Map API之前).但是,之后我调整了我的代码以使用这个新的API.现在,我不知道为什么这种方法googleMap.clear();不起作用!
任何建议将不胜感激.谢谢
=======
更新
=======
完整代码:
private void displayData(final List<Venue> venueList) {
// Removes all markers, overlays, and polylines from the map.
googleMap.clear();
// Zoom in, animating the camera.
googleMap.animateCamera(CameraUpdateFactory.zoomTo(ZOOM_LEVEL), 2000, null);
// Add marker of user's position
MarkerOptions userIndicator = new MarkerOptions()
.position(new LatLng(lat, lng))
.title("You are here")
.snippet("lat:" + lat + …Run Code Online (Sandbox Code Playgroud) OBSOLETED:这个旧问题是指过时的Google Maps v1 API.使用v2 API时,您可以在一个Google API控制台条目中使用多个证书指纹.API密钥不再存储在Manifest或代码中.
是否可以自动检测哪个证书用于签名APK?我想在应用程序中同时调试和发布Maps证书,并将有效的证书传递给MapView构造函数.
通过这样的设置,我在发布应用程序时不会出错 - 我在模拟器和我的设备上使用调试证书,然后在将应用程序发送到Market之前使用第一版进行签名.
我正在考虑检测我的特定设备或调试器是否已连接,但它并不完美.也许某些文件标记需要调试证书?有没有更好的方法?
有没有一种快速有效的方法来获得Android平台上经度和纬度的高度(海拔)?
android中有Point Clustering的代码吗?如何在没有性能问题的情况下加载千针?
android ×10
android-mapview ×10
google-maps ×5
debugging ×1
geolocation ×1
gis ×1
gps ×1
key ×1
mapfragment ×1
maps ×1
zoom ×1