我已经建立了一个数据库,通过textview显示特定建筑的纬度和经度。底部有一个“go”按钮,可以加载我的mapsActivity。但是,我似乎无法将lat和long放在地图上。
地图活动
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
GoogleMap mGoogleMap;
SupportMapFragment mapFrag;
LocationRequest mLocationRequest;
GoogleApiClient mGoogleApiClient;
Location mLastLocation;
Marker mCurrLocationMarker, map1, map2, map3, map4, map5, map6, map7;
ZoomControls zoom;
// public static String TAG1;
// public static String TAG2;
public static String TAG_LAT = "lat";
public static String TAG_LNG = "lng";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
ToggleButton b1 = (ToggleButton) findViewById(R.id.button3);
getSupportActionBar().setTitle("Queen's Building Search");
Intent intent = getIntent();
mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFrag.getMapAsync(this);
zoom = (ZoomControls) findViewById(R.id.zcZoom);
zoom.setOnZoomOutClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mGoogleMap.animateCamera(CameraUpdateFactory.zoomOut());
}
});
zoom.setOnZoomInClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mGoogleMap.animateCamera(CameraUpdateFactory.zoomIn());
}
});
Bundle extras = getIntent().getExtras();
if(extras != null){
double value = extras.getDouble("Latitude");
double value1 = extras.getDouble("Longitude");
// TAG_LAT = extras.getString("Latitude");
// TAG_LNG = extras.getString("Longitude");
goToLocation(value, value1);
}
转到位置调用方法
public void goToLocation(double lat, double lng) {
LatLng ll = new LatLng(lat, lng);
CameraUpdate update = CameraUpdateFactory.newLatLng(ll);
mGoogleMap.moveCamera(update);
// btnGo();
}
建筑活动
btnGoLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Double lat = selectedBuilding.getLatitude();
Double lng = selectedBuilding.getLongitude();
Bundle bundle = new Bundle();
// Intent intent = new Intent(BuildingActivity.this, MapsActivity.class);
//Bundle extras = getIntent().getExtras();
Intent intent = new Intent(BuildingActivity.this, MapsActivity.class);
bundle.putDouble(MapsActivity.TAG_LNG,lat);
bundle.putDouble(MapsActivity.TAG_LNG, lng);
// Intent intent = new Intent(getApplicationContext(), MapsActivity.class);
// intent.putExtra("Latitude", +lat);
// intent.putExtra("Longitude", ""+lng);
// intent.putExtra("latitude", lat);
// intent.putExtra("longitude", lng);
intent.putExtras(bundle);
startActivity(intent);
// Double latt=extras.getDouble(lat);
//Double loNg=extras.getDouble(lng)
}
});
正如你所看到的,我的代码非常混乱,试图让它发挥作用。如果有人能与我合作,那么展示我想要做的事情要容易得多。我觉得我很亲密。
答案 0 :(得分:1)
您是否尝试过MapActivity:
intent.getDoubleExtra("Latitude", 0);
编辑:顺便说一下,它不是一个数据库......只是意图在两个活动之间。这里没有坚持。
答案 1 :(得分:0)
在BuildingActivity
Intent intent = new Intent(getApplicationContext(), MapsActivity.class);
intent.putExtra("Latitude", ""+lat);
intent.putExtra("Longitude", ""+lng);
在MapsActivity
中使用这种方式在onCreate()
回调中获取此值...
Intent intent = getIntent();
如果您的额外数据表示为字符串,则可以使用intent.getStringExtra(String name)方法。在你的情况下:
String lat = intent.getStringExtra("Latitude");
String lng = intent.getStringExtra("Longitude");
现在,MapsActivity
中有lat和lng值。
希望这会对你有所帮助:)。