我正在尝试制作一个会在一个活动中使用Place自动完成片段的应用,当我在其中选择一个地点时,只需点击一下按钮,我就应该打开另一个活动(Google Maps活动)它应该得到我在第一个选择的位置。我已经尝试将经典和纬度从Main类传递给Maps类,但它只是崩溃我的应用程序。任何人都知道如何解决? 提前谢谢!
编辑:到目前为止我尝试过的示例:
/*This is the main class where my autocomplete fragment is*/
Double Lat;
Double lang;
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place.
// Lat = place.getLatLng().latitude;
// lang = place.getLatLng().longitude;
setLang(place.getLatLng().longitude);
setLat(place.getLatLng().latitude);
Log.i(TAG, "Place: " + place.getName());
}
public void setLang(Double langg){
this.lang = langg;
}
public void setLat(Double Latt){
this.Lat = Latt;
}
public Double getLang(){
return lang;
}
public Double getLat(){
return Lat;
}
/* This is the maps class */
MainActivity maAct;
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng place = new LatLng(maAct.getLat(), maAct.getLang());
// LatLng paris = new LatLng(48.8566, 2.3522);
mMap.addMarker(new MarkerOptions().position(place).title("Marker inPlace"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(place));
}
答案 0 :(得分:0)
我的理解是你要导航到经过的纬度和经度。这是一个样本
String uri = String.format(Locale.ENGLISH, "google.navigation:q=%f,%f", Double.parseDouble(latitude), Double.parseDouble(longitude));
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
if(intent.resolveActivity(context.getPackageManager())!=null)
context.startActivity(intent);
您可以找到更多信息,例如创建标记和所有here
编辑: 根据您的代码,您需要设置标记。Here是工作标记示例的步骤和示例。
答案 1 :(得分:0)
好的,您可以考虑通过Intent传递纬度和经度。
// MainActivity
Intent intent = new Intent(MainActivity.this, MapActivity.class);
intent.putExtra("lat", Lat);
intent.putExtra("lng", lang);
startActivity(intent);
和..
// Map Activity onMapReady
double lat = getIntent().getDoubleExtra("lat", DEFAULT_LAT);
double lng = getIntent().getDoubleExtra("lng", DEFAULT_LNG);
LatLng place = new LatLng(lat, lng);
mMap.addMarker(new MarkerOptions().position(place).title("Marker inPlace"));
您无法通过maAct获取值,您的概念不正确。
首先,如果你只是
MainActivity maAct;
maAct未被赋予任何“值”,因此如果您调用任何maAct方法,您将获得NullPointerException。
此外,如果你真的给它一个'价值',
// it is totally wrong, just an example only
MainActivity maAct = new MainActivity();
但它不是相同的参考,因此您无法获得之前存储的值。