Nic*_*ckT 29
它会在地图上方为您绘制一系列直线,因此您需要知道所有路口的纬度和经度(以及它们从直线弯曲的任何地方).将所有这些点添加到叠加层.例如,此代码将在伦敦市中心绘制一个矩形框.
public class OsmdroidDemoMap extends Activity {
private MapView mMapView;
private MapController mMapController;
int mIncr = 10000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.osm_main);
mMapView = (MapView) findViewById(R.id.mapview);
mMapView.setTileSource(TileSourceFactory.MAPNIK);
mMapView.setBuiltInZoomControls(true);
mMapView.setMultiTouchControls(true);
mMapController = mMapView.getController();
mMapController.setZoom(13);
GeoPoint gPt0 = new GeoPoint(51500000, -150000);
GeoPoint gPt1 = new GeoPoint(gPt0.getLatitudeE6()+ mIncr, gPt0.getLongitudeE6());
GeoPoint gPt2 = new GeoPoint(gPt0.getLatitudeE6()+ mIncr, gPt0.getLongitudeE6() + mIncr);
GeoPoint gPt3 = new GeoPoint(gPt0.getLatitudeE6(), gPt0.getLongitudeE6() + mIncr);
mMapController.setCenter(gPt0);
PathOverlay myPath = new PathOverlay(Color.RED, this);
myPath.addPoint(gPt0);
myPath.addPoint(gPt1);
myPath.addPoint(gPt2);
myPath.addPoint(gPt3);
myPath.addPoint(gPt0);
mMapView.getOverlays().add(myPath);
}
}
Run Code Online (Sandbox Code Playgroud)
.
以下是如何在 OSMBonusPack 中使用折线绘制道路的教程: https://github.com/MKergall/osmbonuspack/wiki/Tutorial_1
这非常简单,我已经在我的应用程序中成功使用了它。
我基于该教程的代码如下所示:
RoadManager roadManager = new OSRMRoadManager();
ArrayList<GeoPoint> track = new ArrayList<>();
// TODO: Fill the list with your track points
Road road = roadManager.getRoad(track);
Polyline roadOverlay = RoadManager.buildRoadOverlay(road, context);
mapView.getOverlays().add(roadOverlay);
mapView.invalidate();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15429 次 |
| 最近记录: |