android.i에서 osm을 사용하는 것이 좋습니다. OSM을 android.But에 성공적으로 표시했습니다. "마커를 클릭하고 Google지도 v2 infowindow 팝업과 같은 마커 세부 사항을 표시하는 방법"을 가지고 있습니다.마커에 마커 세부 정보 표시 방법 android osm에서 클릭하십시오.
이미지로 마커 세부 정보를 표시하는 방법 onclick 마커 openstreetmap android, 마커 클릭시 Google지도 인포 우드 쇼와 동일합니다.
osm android에서 마커 클릭 이벤트를 구현하기위한 코드 또는 아이디어를 제공해주십시오.
미리 감사드립니다.
이
내가 안드로이드 자바로 구현 한 내 코드입니다public class MainActivity extends Activity
{
private MapView mapView;
private MapController mapController;
LocationManager locationManager;
ArrayList<OverlayItem> overlayItemArray;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mapView = (MapView)findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
mapView.setClickable(true);
//mapView.setUseDataConnection(false);
mapController = (MapController) mapView.getController();
mapController.setZoom(17);
//--- Create Overlay
overlayItemArray = new ArrayList<OverlayItem>();
DefaultResourceProxyImpl defaultResourceProxyImpl = new DefaultResourceProxyImpl(this);
MyItemizedIconOverlay myItemizedIconOverlay = new MyItemizedIconOverlay(overlayItemArray, null, defaultResourceProxyImpl);
mapView.getOverlays().add(myItemizedIconOverlay);
//---
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//for demo, getLastKnownLocation from GPS only, not from NETWORK
Location lastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(lastLocation != null)
{
updateLoc(lastLocation);
}
//Add Scale Bar
ScaleBarOverlay myScaleBarOverlay = new ScaleBarOverlay(this);
mapView.getOverlays().add(myScaleBarOverlay);
}
@Override
protected void onResume()
{
super.onResume();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, myLocationListener);
}
@Override
protected void onPause()
{
super.onPause();
locationManager.removeUpdates(myLocationListener);
}
private void updateLoc(Location loc)
{
GeoPoint locGeoPoint = new GeoPoint(loc.getLatitude(), loc.getLongitude());
mapController.setCenter(locGeoPoint);
mapController.animateTo(locGeoPoint);
setOverlayLoc(loc);
mapView.invalidate();
}
private void setOverlayLoc(Location overlayloc)
{
GeoPoint overlocGeoPoint = new GeoPoint(overlayloc);
//---
overlayItemArray.clear();
OverlayItem newMyLocationItem = new OverlayItem("My Location", "My Location", overlocGeoPoint);
overlayItemArray.add(newMyLocationItem);
//---
}
private LocationListener myLocationListener = new LocationListener()
{
@Override
public void onLocationChanged(Location location)
{
updateLoc(location);
}
@Override
public void onProviderDisabled(String provider)
{
}
@Override
public void onProviderEnabled(String provider)
{
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras)
{
}
};
private class MyItemizedIconOverlay extends ItemizedIconOverlay<OverlayItem>
{
public MyItemizedIconOverlay(List<OverlayItem> pList,org.osmdroid.views.overlay.ItemizedIconOverlay.OnItemGestureListener<OverlayItem> pOnItemGestureListener,
ResourceProxy pResourceProxy)
{
super(pList, pOnItemGestureListener, pResourceProxy);
}
@Override
public void draw(Canvas canvas, MapView mapview, boolean arg2)
{
super.draw(canvas, mapview, arg2);
if(!overlayItemArray.isEmpty())
{
//overlayItemArray have only ONE element only, so I hard code to get(0)
GeoPoint in = overlayItemArray.get(0).getPoint();
Point out = new Point();
mapview.getProjection().toPixels(in, out);
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
canvas.drawBitmap(bm,out.x - bm.getWidth()/2,out.y - bm.getHeight()/2,null);
}
}
@Override
public boolean onSingleTapUp(MotionEvent event, MapView mapView)
{
//return super.onSingleTapUp(event, mapView);
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent event, MapView mapView)
{
return true;
}
}
}
activity_main.xm
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<org.osmdroid.views.MapView
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</org.osmdroid.views.MapView>
</LinearLayout>
http://stackoverflow.com/questions/12991175/osmdroid-ontap-example – royB
로이 작품에 감사드립니다. – Nehalkumar