Articles of android mapview

在动态壁纸中使用谷歌的MapView v2

我一直试图解决这个问题。 我想在我的动态壁纸中使用MapView v2,到目前为止,我的结果是黑屏,底部有谷歌徽标。 我的清单需要权限: 和元数据: 我还尝试改变一些其他MapView相关问题中建议的硬件加速: android:hardwareAccelerated=”false” 另外我可以确认地图Api键确实是正确的,因为我有一个正确渲染的MapFragment(不是在wallaper服务中,而是在测试活动中): WallpaperService.Engine代码: private class ENGINE extends Engine implements OnMapReadyCallback, GoogleMap.SnapshotReadyCallback { private final String LOG_TAG = ENGINE.class.getSimpleName(); private int width = 0; private int height = 0; private SurfaceHolder holder; private boolean visible; private Bitmap bitmap; private final Handler handler = new Handler(); private final Runnable drawRunner = […]

Android Mapview的替换使用WMS服务

我正在寻找Android MapView的替代品,因为我需要在地图视图中添加WMS服务,并且使用本机视图效果很差。 我尝试过使用Osmdroid API,但仍然没有成功。 这需要将几个java类修改为XYTileSource和BitmapTileSourceBase。 而且我不确定我能不能工作,因为我还没有find有关它的信息。 例如: https : //groups.google.com/forum/?fromgroups#!topic / osmdroid / IUcc4Q0DmOE Android Market中的应用程序可以使其完美地与OruxMaps一起工作,但没有用于开发的API。 🙁 任何人都知道如何以编程方式在另一个地图视图中使用WMS服务。

ListView项目中的MapView

我有一个带有listView的活动,其中每个项目在点击时都可以展开,显示一个mapView。 如果单击其他项目,则关闭打开的项目。 该活动扩展了MapActivity,并且只有一个mapview实例,我将其删除并根据需要添加到项目中,如下所示: private MapView getMapView() { if (mMapView == null) { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMapView = (MapView) inflater.inflate(R.layout.club_map,null); } else { ((ViewGroup) mMapView.getParent()).removeView(mMapView); } return mMapView; } private void attachMap(View targetView,String siteID) { if (openInPrgrs) { return; } RelativeLayout relView = (RelativeLayout) targetView.findViewById(R.id.clubDetailsLayout); LinearLayout mapContainer = (LinearLayout) relView.findViewById(R.id.mapContainer); UtilFunctions.logIfDebug(“MembershipsList”,”Attaching Map. siteID ” […]

MapView泄漏活动(没有位置服务)

我正在使用播放服务v9.8.0( 没有位置服务权限 ),当我在对话框片段中使用MapView时仍然面临泄漏。 我在我的代码示例中使用它,我用它来显示一个位置,我没有setMyLocationEnabled (因为我甚至没有这个设置的权限)。 有没有人在我的代码中看到问题? 我遇到了像这里的泄漏: MapView v2保持了Context 。 我这样做: 创建一个对话框 用MapView替换我的布局中的视图(因为我也允许使用静态地图,所以我的默认视图是我的布局中的ImageView ,将被MapView替换) 然后它发生我的片段泄漏MapView.mContext … 代码 – 对话片段 public class DialogMediaDetails extends DialogFragment { private GoogleMap mGoogleMap = null; private MapView mMapView = null; @Override public final Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dlg = …; // create dialog View view = …; // get […]

我可以在MapView的叠加层中使用AnimationDrawable吗?

我用XML创建了一个AnimationDrawable,它工作正常。 但是在将drawable移动到MapView作为叠加标记(替换一个工作正常的静态drawable)时,animation固执地拒绝播放。 我已将调用start()移动到一个按钮进行测试,即使在MapView显示几秒后按下,animation也无法启动。 我在logcat中什么都看不到。 我知道start()需要在设置完所有窗口后调用,但这似乎是一个单独的问题。 AnimationDrawables与MapView兼容吗? 我需要做些什么特别的工作才能在MapView中完成一项工作吗? 您是否曾成功在MapView中完成一项工作? 解 使用Matt的解决方案(下面)我通过将ImageView放在MapView的图层中而不是使用叠加来添加AnimationDrawable。 public void showAnimatedMarker(GeoPoint point) { LinearLayout v = (LinearLayout) View.inflate(context, R.layout.markerlayout, null); ImageView marker = (ImageView) v.findViewById(R.id.marker); AnimationDrawable markerImage = (AnimationDrawable)marker.getDrawable(); this.addView(v, 0, new MapView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, point, MapView.LayoutParams.BOTTOM_CENTER)); markerImage.start(); } 然后是markerlayout.xml:

如何将GeoPoint转换为硬件屏幕点

我想将GeoPoint转换为屏幕点,以便识别触摸事件之上的所有对象。 所以,我试过这个: Projection projection = this.mapView.getProjection(); GeoPoint gie = new GeoPoint(lat, lon); Point po = new Point(); projection.toPixels(gie, po); 但是,po.x和po.y不是屏幕坐标,而是mapview coords在像素而不是lat,lon。 来自android开发者网站: toPixels(GeoPoint in,android.graphics.Point out)将给定的GeoPoint转换为相对于提供此Projection的MapView左上角的屏幕像素坐标。 那么,是否可以在正确的屏幕上转换它? 我想知道+ touch事件旁边的所有x GeoPoint,如上例所示: —————————————————————- (0,0) ———–> x | | | | | | | <– My screen | + (touch event) | \/ x (my GeoPoint) | y | […]

Mapview和片段

我几个月前看过一些话题,关于在片段中使用(谷歌)MapView有点棘手/不可能的事实。 我想知道atm(六月)是否有解决方法? 我的应用程序(Android 3.0)基本上与Fragment系统一起工作,我需要在其中一个片段中显示一个地图。

如何使用setBuiltInZoomControls(true)布局缩放控件?

想在地图上添加缩放控件。 我还想布局缩放控件的位置而不是默认的中间底部位置。 我可以通过getZoomControl执行此操作,但不推荐使用它。 谁能告诉我如何用setBuildtInZoomControls做到这setBuildtInZoomControls ?

Android我的位置 – 修复

当我的地图活动被调用时,我在onCreate中调用addUserMapPoint。 此函数包含两个实例,我尝试使用myOverlay.getMyLocation获取位置信息。 在此活动的初始加载时,第一次尝试的结果返回一个空的GeoPoint,并且在主UI线程完成位于myOverlay.runOnFirstFix的监听器线程中的第二次尝试之后(新的Runnable()…在一秒钟后调用并且确实包含一个包含lat和lon的GeoPoint。这个监听器函数内的调用看起来似乎把点放在地图上,而mapController.animateTo(gp)行确实将地图移动到我的位置。我的应用程序有一个刷新按钮,当clicked再次触发此活动。我需要lat和lon才能从另一个服务获取位置数据。刷新后,第二次通过map活动代码我期待第一次调用myOverlay.getMyLocation()现在将是能够获得GeoPoint,但它仍然是null。 如果我不能通过第一次调用myOverlay.getMyLocation来获取GeoPoint,那么我如何从myOverlay.runOnFirstFix(new Runnable()… thread中find的第二个调用中传递lat和lon值。你会注意到我一直在尝试将lat和lon添加到MyApp这是辅助bean类,但是即使在刷新之后,此类中的lat和lon也是null。如果我在addUserMapPoint函数中手动设置lat和lon第一次活动访问这些值是保留。我猜这是因为它是在主UI线程上设置的。 public class MapActivity extends com.google.android.maps.MapActivity { private MapView mapView = null; private MapController mapController = null; private MyLocationOverlay myOverlay = null; public static MyApp app; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); app = (MyApp) getApplicationContext(); mapView = (MapView) findViewById(R.id.mapview); mapView.setBuiltInZoomControls(true); mapController = mapView.getController(); List mapOverlays = mapView.getOverlays(); […]

Mapview getLatitudeSpan和getLongitudeSpan不起作用

有时,当尝试使用getLatitudeSpan()和getLongitudeSpan()获取mapview的纬度范围或经度范围时,我分别获得0和360 * 1E6。 这不会总是发生,但这是一个问题,有没有人遇到这个问题? 有任何变通方法吗? 我也尝试使用getProjection(),但我遇到了同样的问题。 这是一段代码: MapView mapView = (MapView) findViewById(R.id.mapview); int lat = mapView.getLatitudeSpan(); // sometimes returns 0 int long = mapView.getLongitudeSpan(); // sometimes returns 360*1E6