1
Google지도 api 대신 osmdroid-android 3.0.5.jar를 사용하여지도에서 위치 좌표를 사용하여 위치를 표시합니다.열린 거리지도를 사용하여 잘못된 지리적 위치에 오버레이 표시
글쎄, 안드로이드 에뮬레이터에서지도를 가져올 수 있지만 문제는 위치를 가리키는 데 사용하는 오버레이가 잘못되었다는 것입니다. 내가이 (가) 지리 좌표 인
GeoPoint geoPoint = new GeoPoint((int)(41.057121 * 1E6), (int)(-73.561867 * 1E6));
를 사용하고 볼 수 있듯이
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<org.osmdroid.views.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_centerInParent="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:id="@+id/osm_map_view"
renderer="CloudMadeStandardTiles"
cloudmadeStyle="1"
/>
</LinearLayout>
:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
private MapView osmMapView;
private MapController controller;
private Projection projection;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
osmMapView = (MapView) findViewById(R.id.osm_map_view);
this.osmMapView.setTileSource(TileSourceFactory.MAPNIK);
this.osmMapView.setBuiltInZoomControls(true);
this.osmMapView.setMultiTouchControls(true);
this.projection = this.osmMapView.getProjection();
this.controller = this.osmMapView.getController();
this.controller.setZoom(5);
List<Overlay> overLayList = osmMapView.getOverlays();
overLayList.add(new ScaleBarOverlay(this));
overLayList.add(new PutOverLayOnMap(this));
}
private class PutOverLayOnMap extends Overlay {
public PutOverLayOnMap(Context ctx) {
super(ctx);
}
@Override
protected void draw(Canvas c, MapView osmv, boolean shadow) {
Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setDither(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(10);
Point point = new Point();
GeoPoint geoPoint = new GeoPoint((int)(41.057121 * 1E6), (int)(-73.561867 * 1E6));
projection.toPixels(geoPoint, point);
c.drawPoint(point.x, point.y, paint);
System.out.println("GeoPoint(OSM) : "+geoPoint.getLatitudeE6()+" #### "+geoPoint.getLongitudeE6());
}
}
다음
내 main.xml에 있습니다 : 여기 내 코드입니다 Stamford US 이제 빨간색 점이 아프리카 어딘가에 나타납니다. f지도 (위도의 교차점 & 경도).내가 뭘 잘못하고있어?