2012-04-03 13 views
3

聞くが、私のプロジェクトで私のprojectは「MapViewの」内の現在位置を示す

ている間、私はマークに ことができないんだけど、現在のLAT-long.Butを示し、自分の現在位置を表示していますマークすることはできません私の現在のアンドロイド位置。

Thnxです。

@Override 
public void onLocationChanged(Location location) { 
    // TODO Auto-generated method stub 
    Log.d(TAG, "onLocationChanged with location " + location.toString()); 
    // Displays lat, long, altitude and bearing 
    String text = String.format("Lat:\t %f\nLong:\t %f\nAlt:\t %f\nBearing:\t %f", location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getBearing()); 
    this.locationText.setText(text); 

    try { 
     // This gets a list of addresses 
     List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), 
       location.getLongitude(), 10); 
     for (Address address : addresses) { 
      this.locationText.append("\n" + "kaushik"); 
     } 

     // Convert latitude and longitude into int that the GeoPoint constructor can understand 
     int latitude = (int)(location.getLatitude() * 1000000); 
     int longitude = (int)(location.getLongitude() * 1000000); 

     point = new GeoPoint(latitude,longitude); 
     mapController.animateTo(point); 
     mapController.setZoom(16); 

     MapOverlay mapOverLay=new MapOverlay(); 
     mapOverLay.setPointToDraw(point); 
     List<Overlay> listOfOverlays=map.getOverlays(); 
     listOfOverlays.clear(); 
     listOfOverlays.add(mapOverLay); 

     map.invalidate(); 

    } catch (IOException e) { 
     Log.e("LocateMe", "Could not get Geocoder data", e); 
    } 
} 
+0

ペーストを使用して、あなたの私たちは変更を加えることができるようにコードします –

+0

@Agarwal私はすでに私のプロジェクトを盛り上げました。 – kaushikSuman

+0

あなたのごちそうをここに貼り付けることができれば、他の人たちにも完全に利用されます。 –

答えて

4
mapController.animateTo(point); 
mapController.setZoom(16); 
MapOverlay mapOverLay=new MapOverlay(); 
mapOverLay.setPointToDraw(point); 
List<Overlay> listOfOverlays=map.getOverlays(); 
listOfOverlays.clear(); 
listOfOverlays.add(mapOverLay); 

をオーバーレイアイコンを追加します。

Drawable srcdrawable = getApplicationContext().getResources().getDrawable(R.drawable.pin_blue); 
CustomItemizedOverlay srcitemizedOverlay = new CustomItemizedOverlay(srcdrawable, getApplicationContext()); 
GeoPoint srcpoint = new GeoPoint((int)(Double.parseDouble(lat) * 1E6),(int)(Double.parseDouble(lng)* 1E6)); 
OverlayItem srcoverlayitem = new OverlayItem(srcpoint, "Hello!", "This is your Location."); 
srcitemizedOverlay.addOverlay(srcoverlayitem); 
mapView.getOverlays().clear(); 
mapView.getOverlays().add(srcitemizedOverlay); 
mapController.animateTo(srcpoint); 
mapController.setZoom(16); 

//あなたがマップ上に複数のポイントが必要な場合も /*

Drawable srcdrawable = getApplicationContext().getResources().getDrawable(R.drawable.pin_blue); 
CustomItemizedOverlay srcitemizedOverlay = new CustomItemizedOverlay(srcdrawable, getApplicationContext()); 
forloop(setoflocations){ 
GeoPoint srcpoint = new GeoPoint((int)(Double.parseDouble(lat) * 1E6),(int)(Double.parseDouble(lng)* 1E6)); 
OverlayItem srcoverlayitem = new OverlayItem(srcpoint, "Hello!", "This is your Location."); 
if(srcitemizedOverlay!=null && mapController!=null){ 
srcitemizedOverlay.addOverlay(overlayitem); 
mapController.animateTo(point); 
animatePoint = point; 
} 
} 
mapView.getOverlays().clear(); 
mapView.getOverlays().add(srcitemizedOverlay); 

*/

はCustomItemizedOverlay.javaクラス以下

public class CustomItemizedOverlay extends ItemizedOverlay<OverlayItem> { 

    private final ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 

    private Context context; 

    public CustomItemizedOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 

    public CustomItemizedOverlay(Drawable defaultMarker, Context context) { 
     this(defaultMarker); 
     this.context = context; 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mapOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mapOverlays.size(); 
    } 

    public void addOverlay(OverlayItem overlay) { 
     mapOverlays.add(overlay); 
     this.populate(); 
    } 

} 
+0

もう1つ質問すると、どのようにマップ内のlat-longを使って別の4-5位置をマークできますか? – kaushikSuman

+0

@Agarwalなぜ animatePoint =ポイント; – kaushikSuman

+0

それを使用するかどうかはあなた次第です。それを使用すると、最後の緯度と経度に移動します。私はそれを賢く説明した理由は他にも役立つでしょう。 –

0

緯度と長いが、GPSから取り出される行//以下と上記の行を交換し、現在の位置に

myItemizedOverlay.addItem(point , "myPoint1", "myPoint1"); 
      m_mapView.getOverlays().add(myItemizedOverlay); 

mapController.animateTo(point); 
関連する問題