Google Map MapView использует кнопку намерения для геокодирования - не приводит к правильному месту - PullRequest
0 голосов
/ 07 января 2012

Я установил класс MapView с оверлеями (и они работают нормально.)

Мое приложение построено на вкладках, и на моей первой вкладке это мой код:

 public void onCreate(Bundle savedInstanceState) {
        Button ButtonName1;
        Button ButtonName2;

        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);

        {
        ButtonName1 = (Button) findViewById(R.id.ButtonName1);
        ButtonName1.setOnClickListener(new OnClickListener() {
          public void onClick(View arg0) {
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:51.594748,-0.107879"));
            i.setClassName("my.android.project", "my.android.project.Map"); // .Map is my MapView file
            startActivity(i);
          }
        });
        }
        {
        ButtonName2 = (Button) findViewById(R.id.ButtonName2);
        ButtonName2_Cinema.setOnClickListener(new OnClickListener() {
            public void onClick(View arg1) {
                Intent ii = new Intent(Intent.ACTION_VIEW, Uri.parse("51.55748,0.07388"));
                ii.setClassName("my.android.project", "my.android.project.Map");
                startActivity(ii);
              }
            });
        }
          }

}

Теперь, нажав на эти кнопки, он успешно выводит меня на класс Map, и мои наложения отображаются совершенно правильно, в правильном положении, но это не указывает на то, что эти точные положения широты и долготы, следовательно, не непосредственно на оверлеи.

Кто-нибудь знает почему?

Вот мой MapClass:

открытый класс Map расширяет MapActivity {

private MapView mapView;


public static int latitude1 = (int) (51.508170 * 1E6);
public static int longitude1 = (int) (-0.128017 * 1E6);



@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_layout);

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

    List<Overlay> mapOverlays = mapView.getOverlays();
    Drawable drawable = this.getResources().getDrawable(R.drawable.icon);
    OverlayMap itemizedOverlay = new OverlayMap(drawable, this);


    GeoPoint location1 = new GeoPoint(latitude1, longitude1);
    OverlayItem overlayitem = new OverlayItem(location1, "Title", "Contents");
    itemizedOverlay.addOverlay(overlayitem);


    mapOverlays.add(itemizedOverlay);

    MapController mapController = mapView.getController();

    GeoPoint yourGeoPoint = new GeoPoint(latitude1,longitude1);
    mapController.animateTo(yourGeoPoint);
    mapController.setZoom(10);

}

@Override
protected boolean isRouteDisplayed() {
    return true;
}

}

1 Ответ

0 голосов
/ 07 января 2012

Используете ли вы метод animateTo(GeoPoint geoPoint), чтобы перейти к вашей географической точке?

РЕДАКТИРОВАТЬ:

Вы должны сделать что-то подобное в вашей MapActivity, вы можете поместить код в onCreate ():

GeoPoint yourGeoPoint = new GeoPoint(yourLatitude*1E6, yourLongitude*1E6);
yourMapViewControler.animateTo(yourGeoPoint);

Я не знаю точно, как ваша MapActivity помогает вам лучше, но дело в том, что вы должны поместить приведенный выше код в MapActivity, где у вас есть доступ к контроллеру вашей карты и новым координатам (я думаю, в onCreate ()).

РЕДАКТИРОВАТЬ II:

Я думаю, что вы не правильно отправляете долготу и широту через ваше намерение.

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

РЕДАКТИРОВАТЬ III:

Хорошо, так что вы должны сделать это, чтобы передать ваши геоинты к следующему действию: в вашей кнопке нажмите слушательвы должны написать это:

/* create a intent to start the new activity */
Intent intent = new Intent(this, YourMapActivity.class);
/* create a bundle to pass data to your next activity */
Bundle bundle = new Bundle();
/* put the latitude and longitude values into the bundle */
bundle.putInt("latitude_key", yourLatitudeValue); 
bundle.putInt("longitude_key", yourLongitudeValue);
/* include the bundle into your intent */
intent.putExtras(bundle);
/* start your MapActivity */
startActivity(intent);

Хорошо, теперь нам нужно получить данные из пакета и использовать их на вашей карте. Следующий код предназначен для вашей MapActivity в методе onCreate ():

/* get the bundle from the button activity */
Bundle bundle = getIntent().getExtras();
/* get the latitude and longitude based on the same key you put in the ButtonActivity to send the data */
int latitude = bundle.getInt("latitude_key", 0);
int longitude = bundle.getInt("longitude_key", 0);
/* put the data into a GeoPoint and make the animation */
GeoPoint yourGeoPoint = new GeoPoint(latitude * 1E6, longitude * 1E6);
yourMapViewControler.animateTo(yourGeoPoint);

ButtonActivity - это действие, на котором у вас есть кнопки :).Обратите внимание, что для получения правильных данных вы должны использовать те же строки ключей в вашем пакете, как в примере выше.

Надеюсь, теперь все ясно: D.

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