通过意图在预选位置打开地图

时间:2017-03-06 09:07:23

标签: java android google-maps

我正在尝试制作一个会在一个活动中使用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));

}

2 个答案:

答案 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();

但它不是相同的参考,因此您无法获得之前存储的值。