지오코드를 이용한 검색을 하고
거기서 얻은 위도와 경도를 받아 draw해서 마커를 찍은 후
마커를 클릭하면 팝업창이 뜨게끔 구현하려고 하는데요...
소스 자체는 에러도 없고 실행도 되는데...
빨간색 부분이 마커 클릭 시에 팝업창을 띄우는 부분의 소스인데.. .
검색을 통해서 지오코드 실행한 부분을 지우고 ( try { catch 부분)
임의로 지오포인트를 주고 실행 하면 모든 기능이 잘 수행되는데요..
지오코드를 얻어서 그 지오 포인트를 이용해서 그릴려고 하면 안되네요 ㅠㅠ 그림 자체가 안 뜸 ...
혹시
GeoPoint point2 = new GeoPoint(37297135,126971430);
이 부분에서 GeoPoint 부분 안에 무조건 위도와 경도가 들어가야 하는건가요??
GeoPoint newPoint = new GeoPoint((int) (lat * 1E6),
(int) (lon * 1E6));
이런식으로 되어 있으면 그릴 수가 없는건가요??
고수님들의 도움이 절실히 필요합니다. ㅠ
public class MyMap extends MapActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.mapping);
final List<Overlay> mapOverlays = mapview.getOverlays();
Drawable drawable = this.getResources().getDrawable(R.drawable.paw);
final HelloItemizedOverlay itemizedoverlay = new HelloItemizedOverlay(drawable, this);
geocode.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String placeName = name.getText().toString();
try {
List<Address> geocodeResults = coder.getFromLocationName(
placeName, 3);
Iterator<Address> locations = geocodeResults.iterator();
String locInfo = "Results:\n";
// Log.e(TAG, "enter");
while (locations.hasNext()) {
Address loc = locations.next();
locInfo += String.format("Location: %f, %f", loc
.getLatitude(), loc.getLongitude());
lat = loc.getLatitude();
lon = loc.getLongitude();
}
GeoPoint newPoint = new GeoPoint((int) (lat * 1E6),
(int) (lon * 1E6));
controller.animateTo(newPoint);
// GeoPoint point2 = new GeoPoint(37297135,126971430);
OverlayItem overlayitem = new OverlayItem(newPoint, "평화각", "맛있는 짜장면집");
itemizedoverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedoverlay);
MapController mapControl = mapview.getController();
mapControl.setCenter(itemizedoverlay.getCenter());
mapControl.setZoom(17);
} catch (IOException e) {
Log.e("Mapping", "Failed to get location info", e);
}
}
});
initMyLocation();
}
public class HelloItemizedOverlay extends ItemizedOverlay<OverlayItem> {
Context mContext; // Class member 변수로 mContext 설정
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
public HelloItemizedOverlay(Drawable defaultMarker, Context context) {
super(boundCenterBottom(defaultMarker));
this.mContext = context;
}
public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
@Override
public boolean onTap(int index) {
OverlayItem item = mOverlays.get(index);
AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
dialog.setTitle(item.getTitle());
dialog.setMessage(item.getSnippet());
dialog.show();
return true;
}
}