Articles of android maps

osmdroid,Maps API v2和片段

好。 你会认为这会相对简单,但不是。 我在我的网站上使用Open街道地图,因为数据可以免费使用,编辑和更新 – 我的项目遵循这个咒语,除了googles API使用限制/保存数据限制,谷歌地图根本不适合我..至少在网上。 考虑到这一点,我以为我会跟随我的Android应用程序,所以我设置osmdroid利用开放的街道地图数据。 我可以在我的活动中有一个很好的地图..我也遵循一个教程,它似乎至少工作,我可以在tabhost / viewpager中的片段中有一个地图视图。 然而,我真正想要的(对于平板电脑)是左边一个片段中的机构列表,右边是一个地图片段,显示这些机构的位置。 很简单我会想到,但是数小时的研究表明,除非你使用一些复杂的代码和一些不赞成的方法,否则这是不可能的。 所以…片段(包含一个地图视图)在tabhost中完美地加载和运行..我可以从我的活动等访问片段中的方法..但没有什么可以简单地并排放置两个片段。 现在..我知道谷歌刚刚推出他们的API v2 ..我安装它并玩了..不知道osmdroid如何工作,我以为我可以更新所以我有MapFragment而不是SherlockFragment(我使用ABS)。这只是抛出logcat错误要求API密钥等..并且鉴于我不想使用谷歌地图数据,我认为我出错了。 所以..任何人都可以建议我如何使用市场上可用的任何东西并排获得列表片段和地图片段,但最好使用开源地图数据,这样他们就没有使用限制。 我确信全面概述“可用的东西及其工作原理”将受到大量用户的极大赞赏..所以,如果有人可以提供建议,那就太棒了!

在SupportMapFragment中引用MapView

我有一个扩展SupportMapFragment的片段。 public class PlaceMapsFragment extends SupportMapFragment { private GoogleMap mMap; private LatLng mPosFija; public PlaceMapsFragment() { super(); } public static PlaceMapsFragment newInstance(LatLng posicion) { PlaceMapsFragment frag = new PlaceMapsFragment(); frag.mPosFija = posicion; return frag; } @Override public GoogleMap getMap() { // TODO Auto-generated method stub return super.getMap(); } @Override public void onCreate(Bundle arg0) { // […]

调用getSystemService(Context.LOCATION_SERVICE)和未调用onLocationChanged时出现NullpointerException

我正在尝试创建一个更新当前gps位置的后台服务。 我在NullPointerException LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);行获取NullPointerException LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); HomeActivity推出服务 startService(new Intent(getApplicationContext(), ForHire.class)); Service(ForHire)创建TimerTask更新 public class ForHire extends Service { … private Timer getUpdatesNow = new Timer(); private Updates updates = new Updates(getUpdatesNow); @Override public void onCreate() { … getUpdatesNow.schedule(updates, God.KM20TIME); Log.v(“Taxeeta”, “Notification created”); } private class Updates extends TimerTask implements LocationListener […]

Google Maps Android API v2 – MarkerOptions可拖动和可见方法

我正在玩本月早些时候发布的新版谷歌地图Android API(v2),我很高兴看到一个MarkerOptions.draggable(boolean draggable)方法,我认为在传递draggable值true时会创建一个可拖动标记。 但是,在尝试它时(即向地图添加标记),它似乎没有做任何事情。 MarkerOptions.visible(boolean visible)方法也是如此,我认为在传递visible值false时会隐藏标记。 任何人都能够使用这些方法吗?

Android GoogleMap或SupportMapFragment – 空指针exception

在我的应用程序中我在片段中显示谷歌地图版本2。 但我得到Null指针exception mMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 这是我的完整代码: public class SearchResultMap extends Fragment{ private GoogleMap mMap; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View fragmentView = inflater.inflate(R.layout.map, container, false); mMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); // line no : 28 mMap.addMarker(new MarkerOptions() .position(new LatLng(xxxxxx,xxxxxx)) .title(“Current Location”) .icon(BitmapDescriptorFactory.fromResource(R.drawable.ball_pointer)) […]

旋转的OpenStreetMap视图 – 在Android中旋转后如何在手指移动方向上滑动地图?

我正在使用OSM进行地图绘制应用程序,我按行程方向旋转地图,如Android Rotating MapView所述 。 这很好用。 但是,我还没有设法调整dispatchTouchEvent代码来对抗用户触摸的地图旋转效果(现在当地图旋转90度时,用户的水平扫描会垂直移动地图等)。 示例代码仅提供预告片: public boolean dispatchTouchEvent(MotionEvent ev) { // TODO: rotate events too return super.dispatchTouchEvent(ev); } 任何指导将不胜感激。 当我在它时 – 是否仍然可以单独定位缩放控件,以便它们在地图旋转时不旋转? 我读到不推荐使用getZoomControls()。 (为什么?)

MyLocationOverlay dispatchTap()不会传播

我有一个MapView ,其中包含一些叠加层和MyLocationOverlay的子类,因为我希望用户当前位置显示在其他标记之上。 我正在处理标记的onTap事件,以显示一个面板,其中包含点击标记的信息,如果在标记之外(甚至在位置标记中)点击,则面板应该隐藏。 如果我点击标记或空白点一切都很好,面板会按预期显示或隐藏,但如果我点击位置标记没有任何反应(如果位置标记位于另一个标记上,则信息不会显示,如果它在外面,信息显示它不隐藏)。 在我的MyLocationOverlay我重写了dispatchTap()函数,使其返回false,如文档中所述 : 返回:如果处理此点击,则返回true; 如果应该将其发送到其他叠加层,则为false 。 但仍然无法正常工作,即使我试着以及以防万一,但没有… 有人知道如何将onTap事件传播到其他叠加层吗?

使用Geocoder(Android)绘制路径是否有限制?

我能够在两个位置之间绘制一条路径,但如果距离太长 – 超过300公里 – 则路径不能完全绘制。 我正在使用下面的代码来绘制路径: class MapOverlay extends com.google.android.maps.Overlay { Road mRoad; ArrayList mPoints; public MapOverlay(Road road, MapView mv) { mRoad = road; if (road.mRoute.length > 0) { mPoints = new ArrayList(); for (int i = 0; i < road.mRoute.length; i++) { mPoints.add(new GeoPoint((int) (road.mRoute[i][1] * 1000000), (int) (road.mRoute[i][0] * 1000000))); } int moveToLat […]

移动相机位置时,在谷歌地图中find标记位置

如何在移动摄像机位置的同时在Google地图上find标记和标记位置(Lat,Lan) 。

我可以在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: