【问题标题】:MapFragment: how can I use the MapActivity functions to draw markers?MapFragment:如何使用 MapActivity 函数绘制标记?
【发布时间】:2012-11-17 07:05:38
【问题描述】:

问题:

我需要在 ViewPager 中放置一个 MapView

更多信息:

由于 Mapview 将是静态的 (clickable="false"),因此滚动或触摸事件不会有任何问题。 ViewPager 将得到每一次触摸,仅此而已。

我尝试过的:

经过大量谷歌搜索,我找到了这个很棒的库:https://github.com/inazaruk/map-fragment

我在寻呼机适配器中的代码:

@Override
public Fragment getItem(int position) {
        return new MyMapFragment(itineraries);
}

和我在 MyMapFragment 中的构造函数:

public ArrayList<Itinerary> itineraries;

public MyMapFragment(ArrayList<Itinerary> itineraries) {
    super();
    this.itineraries = itineraries;
}

这很有效,我对结果感到非常满意,并且点击时的行为设置为 false

我的问题:

因为我想画行程,我完全卡住了。

MapFragment 没有任何 Mapview 功能。 我知道我可以编辑 MyMapActivity 类并使一切在那里工作,但是如何将 ArrayList 从 Fragment 发送到 Activity?

目前 MapACtivity 没有任何变量来绘制标记。所有这些信息都在 MapFragment 中

【问题讨论】:

    标签: android android-mapview fragment mapfragment


    【解决方案1】:

    据我了解,请使用ItemizedOverlay&lt;OverlayItem&gt;(只需放置图像即可在地图上绘制标记)。

    public class MyViewActivity extends MapActivity {
    ....
    OverlayItem myMarker;
    MapView myMapView;
    ItemizedOverlay<OverlayItem> mItemizedoverlay;
    GeoPoint mCurrentPoint;
    
    ....
    
    Drawable drawable = this.getResources().getDrawable(R.drawable.target);
        mItemizedoverlay = new MyItemizedOverlay(drawable, this);
    
    ....
    
    Address address = ...;
    ....
    mCurrentPoint = new GeoPoint((int) (address.getLatitude() * 1E6), (int) (address.getLongitude() * 1E6));
    myMarker = new OverlayItem(mCurrentPoint, "Submit", toSearch);
                mItemizedoverlay.addOverlay(myMarker);
                myMapView.getOverlays().add(mItemizedoverlay);
    
    ....
    

    【讨论】:

    • 最大的问题是显示标记的 mCurrentPoint 在 MapFragment 中是已知的(在我的行程数组中)。但我无法将它传递给 MapACtivity。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多