2012-02-22 2 views
0

안드로이드 응용 프로그램에서 googlemap을 만들었습니다. 이제 나는 내 위치에 핀을 그려 넣고 싶다.android draw pin on google

이 내 코드가입니다 : -

public class GooglemapActivity extends MapActivity { 
private List<Overlay> mapOverlays; 
private Drawable drawable; 
private MyOverlay itemizedOverlay; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    MapView mMapView; 
    mMapView = (MapView) findViewById(R.id.mapview); 
    mMapView.setBuiltInZoomControls(true); 
    mapOverlays = mMapView.getOverlays(); 
    drawable = getResources().getDrawable(R.drawable.c_map_pin_blue); 
    itemizedOverlay = new MyOverlay(drawable); 
    GeoPoint point = new GeoPoint((int) 26.863966000000000, 
      (int) 75.766938300000000); 

    itemizedOverlay.addItem(point, "Quippelin", "0"); 
    mapOverlays.add(itemizedOverlay); 

} 

@Override 
protected boolean isRouteDisplayed() { 
    // TODO Auto-generated method stub 
    return false; 
} 
} 

이 내 다른 클래스입니다 : -

public class MyOverlay extends ItemizedOverlay<OverlayItem> { 
private ArrayList<OverlayItem> overlayItemList = new ArrayList<OverlayItem>(); 

public MyOverlay(Drawable marker) { 
    super(boundCenterBottom(marker)); 
    // TODO Auto-generated constructor stub 

    populate(); 
} 

public void addItem(GeoPoint p, String title, String snippet) { 
    OverlayItem newItem = new OverlayItem(p, title, snippet); 
    overlayItemList.add(newItem); 
    populate(); 
} 

@Override 
protected OverlayItem createItem(int i) { 
    // TODO Auto-generated method stub 
    return overlayItemList.get(i); 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return overlayItemList.size(); 
} 

@Override 
public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
    // TODO Auto-generated method stub 
    super.draw(canvas, mapView, shadow); 
    // boundCenterBottom(marker); 
} 
} 

내지도가 제대로 표시되지만 내 핀이 표시되지 않습니다에 저를 도와주세요 내가 한 실수를 알아 내라.

미리 감사드립니다.

답변

3

귀하의 요점을 제외한 모든 것이 "꺼짐"입니다.

핀이 좌표 0,0 근처에 표시되어야하므로 계산이 잘못되었습니다. 시도해보십시오 :

GeoPoint point = new GeoPoint((int) (26.863966 * 1E6), (int) (75.7669383 * 1E6)); 

이유 : 귀하의 (int) 캐스트 결과는 북극 근처의 어딘가에 있어야합니다. 문서 확인 :

주어진 위도와 경도로 마이크로도 (도 * 1E6)로 측정 한 GeoPoint를 생성합니다.

0

문제를 해결하기 위해이 코드를 사용했습니다.

double mLatitude = 26.863966000000000; 
    double mLongtitude = 75.766938300000000; 
    GeoPoint point = new GeoPoint((int) (mLatitude * 1E6),(int) (mLongtitude * 1E6)); 

이제 제대로 작동합니다.

및 WarrenFaith의 답변도 정확합니다.

0

문제가 있습니다. 이 점을 시도하십시오.

GeoPoint point = new GeoPoint((int) 19240000,(int) -99120000);