2012-05-01 53 views
0

我是新來的android編程,我想要做的是從兩個EditText源和目標獲取位置並將它們標記在下面的地圖上,我能夠從EditText上的一個按鈕的點擊地圖上標記一個標記:如何在地圖上添加源和目的地在Android地圖上的兩個標記

這裏是我的XML:

<?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" > 



      <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="100" > 

     <EditText 
      android:id="@+id/location" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:hint="Type Your Address here" 
      android:layout_weight="20" 
      > 
     </EditText> 

     <Button 
      android:id="@+id/geocodeBtn" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Search" 
      android:layout_weight="80" 
       /> 
    </LinearLayout> 

     <TextView 
      android:id="@+id/position" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Latitude/Longitude..." /> 

       <com.google.android.maps.MapView 
     android:id="@+id/geoMap" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" android:clickable="true" 
     android:apiKey="0I0jOn_3OgbSahP7YkXmjc3d6fn2Rwrdepi0noQ" /> 

     </LinearLayout> 

這是類代碼:

package bijoy.happy; 

import java.util.List; 

import com.google.android.maps.GeoPoint; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 

//import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Point; 
import android.location.Address; 
import android.location.Geocoder; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

public class SearchByAddressActivity extends MapActivity { 
    MapView mapView; 
    Geocoder geocoder; 
    GeoPoint p,qt,pt; 

    class MapOverlay extends com.google.android.maps.Overlay 
{ 
    @Override 
    public boolean draw(Canvas canvas, MapView mapView, 
    boolean shadow, long when) 
    { 
     super.draw(canvas, mapView, shadow);     

     //---translate the GeoPoint to screen pixels--- 
     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(p, screenPts); 

     //---add the marker--- 
     Bitmap bmp = BitmapFactory.decodeResource(
      getResources(), R.drawable.pin);    
     canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);   
     return true; 
    } 
}//end of class 


    @Override 
/** Called when the activity is first created. */ 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mapView = (MapView) findViewById(R.id.geoMap); 
    mapView.setBuiltInZoomControls(true); 
    mapView.setClickable(true); 


    // map starting point 
    int lat = (int) (51.678383 * 1000000); 
    int lng = (int) (19.334822 * 1000000); 
    pt = new GeoPoint(lat, lng); 


    mapView.getController().setZoom(8); 

    mapView.getController().setCenter(pt); 

    Button geoBtn = (Button) findViewById(R.id.geocodeBtn); 

    geocoder = new Geocoder(this);  


    geoBtn.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      try { 
       EditText locale = (EditText) findViewById(R.id.location); 
       String locationName = locale.getText().toString(); 

       List<Address> addressList = geocoder.getFromLocationName( 
         locationName, 5); 
       if (addressList != null && addressList.size() > 0) { 
        int lat = (int) (addressList.get(0).getLatitude() * 1e6); 
        int lng = (int) (addressList.get(0).getLongitude() * 1e6); 

        TextView pozycja = (TextView) findViewById(R.id.position); 
        pozycja.setText("lat: " 
          + addressList.get(0).getLatitude() + " lng: " 
          + addressList.get(0).getLongitude()); 

        p = new GeoPoint(lat, lng); 
        mapView.getController().setZoom(18); 
        mapView.getController().setCenter(p); 

        //---Add a location marker--- 
        MapOverlay mapOverlay = new MapOverlay(); 
        List<Overlay> listOfOverlays = mapView.getOverlays(); 
        listOfOverlays.clear(); 
        listOfOverlays.add(mapOverlay); 


        mapView.invalidate(); 

       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 

} 


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

XML代碼將有1更多EditText和a按鈕進行搜索。請幫忙。!

回答

0

以下link也許能夠幫助您:

+0

謝謝!那工作:-) .. – Zerosleep

相關問題