我正在尝试在离线地图上放置一个标记,我已经使用osmdroid成功显示了该标记。 为了避免混乱我的代码。我想在不同的类文件中定义叠加标记的方法。任何帮助都将受到高度赞赏。
我的主要活动就像。
public class MainActivity extends Activity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView mapView = (MapView) findViewById(R.id.mapview);
textView = (TextView) findViewById(R.id.tv_location);
mapView.setTileSource(TileSourceFactory.MAPNIK);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setClickable(true);
MapController mapController = mapView.getController();
mapController.setCenter(new GeoPoint(22.6772796,79.5897374));
GeoPoint point1 = new GeoPoint(22.6772796,79.5897374);
mapController.setZoom(10);
LocationManager myLocationManager = (LocationManager) getApplicationContext().getSystemService(LOCATION_SERVICE);
LocationListenerProxy llp=new LocationListenerProxy(myLocationManager);
llp.startListening(gpsLocationListener, 1, 1) ;
Marker mrkr = new Marker();
mrkr.displayMarker();
}
我的标记类类似于:
public class Marker {
public void displayMarker(){
ResourceProxyImpl mResourceProxy = new ResourceProxyImpl(getApplicationContext());
final RelativeLayout rl = new RelativeLayout(this);
CloudmadeUtil.retrieveCloudmadeKey(getApplicationContext());
this.mOsmv = new MapView(this, 256);
rl.addView(this.mOsmv, new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
}
}
答案 0 :(得分:0)
没有必要为此创建不同的类,您需要在MainActiviy.java中编写一段代码
ArrayList<OverlayItem> anotherOverlayItemArray = new ArrayList<OverlayItem>();
anotherOverlayItemArray.add(new OverlayItem("Bangalore","India", point1));
OnItemGestureListener<OverlayItem> myOnItemGestureListener = null;
ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(this, anotherOverlayItemArray, myOnItemGestureListener);
map.getOverlays().clear();
map.getOverlays().add(anotherItemizedIconOverlay);
map.invalidate();
在你的lib文件夹中使用osmdroid-android-4.2.jar,不要忘记构建Path。 jar文件包含所有必需的图像。