как получить искомую позицию с карты Google в Android - PullRequest
0 голосов
/ 31 марта 2012

В моем коде у меня есть одно текстовое поле и одна кнопка. Какое бы место вы ни вводили в текстовое поле, его нужно искать по картам Google, нажимая кнопку. И значок должен быть показан в месте поиска.
В моем коде я получаю карту, но я не могу найти местоположение. Пожалуйста, помогите.

  public class MapActivity extends com.google.android.maps.MapActivity implements
    OnClickListener {
/** Called when the activity is first created. */
MapView view;
Button search;
EditText location;
MapController controller;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    view = (MapView) findViewById(R.id.themap);
    location = (EditText) findViewById(R.id.editText1);
    search = (Button) findViewById(R.id.search);
    search.setOnClickListener(this);
    view.setBuiltInZoomControls(true);
}

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

public void onClick(View v) {
    // TODO Auto-generated method stub
    if (v == search) {
        Geocoder geo = new Geocoder(getApplicationContext(),
                Locale.getDefault());
        try {
            List<Address> addresses = geo.getFromLocationName(location
                    .getText().toString(), 5);
            if (addresses.size() > 0) {
                GeoPoint p = new GeoPoint((int) (addresses.get(0)
                        .getLatitude() * 1E6), (int) (addresses.get(0)
                        .getLongitude() * 1E6));

                controller.animateTo(p);
                controller.setZoom(12);
                MapOverlay mapOverlay = new MapOverlay();
                List<Overlay> lisOverlays = view.getOverlays();
                lisOverlays.clear();
                lisOverlays.add(mapOverlay);

            } else {
                AlertDialog.Builder adb = new AlertDialog.Builder(
                        MapActivity.this);
                adb.setTitle("Google Map");
                adb.setMessage("please provide proper place");
                adb.setPositiveButton("Close", null);
                adb.show();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
 }
  MapOverlay.java
   public class MapOverlay extends com.google.android.maps.Overlay
   {
Context context;
public boolean draw(Canvas canvas,MapView mapView,boolean shadow,long when)
{
    super.draw(canvas, mapView, shadow);
    Point screenPts = new Point();
    GeoPoint p = null;
    mapView.getProjection().toPixels(p, screenPts);
    Bitmap bitmap=BitmapFactory.decodeResource(context.getResources(),     R.drawable.ic_launcher);
    return true;

}

}

Когда я компилирую это, я получаю сообщение об ошибке в строке: controller.animateTo(p);

1 Ответ

0 голосов
/ 31 марта 2012
In oncreate() instantiate the Mapcontroller as below so that you will not get an error in animateTo method.

controller= view.getController();

also GeoPioint p =null; so replace the MAp overlay class with below


MapOverlay.java

public class MapOverlay extends com.google.android.maps.Overlay
{
GeoPoint p;
Context context;
public MyOverLay(Context context,GeoPoint p) // GeoPoint is a int. (6E) 
{ 
this.p = p; 
this.context = context;
} 
public boolean draw(Canvas canvas,MapView mapView,boolean shadow,long when)
{
    super.draw(canvas, mapView, shadow);
    Point screenPts = new Point();
    mapView.getProjection().toPixels(p, screenPts);
    Bitmap bitmap=BitmapFactory.decodeResource(context.getResources(),     R.drawable.ic_launcher);
    return true;

}

тогда в вашем основном коде передайте геопункт, как показано ниже, и он решит вашу проблему ....

MapOverlay mapOverlay = новый MapOverlay (getApplicationContext (), p);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...