在执行这个"定位"按钮时,我希望我的地图从MainActivity.java中的btnShowLoc函数获得输入值,并显示相同的值。
activity_main.xml
<Button
android:onClick="btnShowLoc"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Locate" />
<fragment
android:id="@+id/map"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
class="com.google.android.gms.maps.MapFragment"
android:layout_width="350dp"
android:layout_height="230dp"
tools:context=".MapLocationActivity"
tools:layout="@layout/activity_main" />
主要活动.java
public void btnShowLoc(View view) {
EditText txtLat = (EditText) findViewById(R.id.txtLat);
EditText txtLong = (EditText) findViewById(R.id.txtLong);
//Need instruction about how to call MapActivity.java
}
MapActivity.java
public class MapActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapFragment map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map));
map.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng Device = new LatLng(28.7041, 77.1025);
mMap.addMarker(new MarkerOptions().position(Device).title("Device Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(Device));
mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
mMap.setTrafficEnabled(true);
mMap.setIndoorEnabled(true);
mMap.setBuildingsEnabled(true);
mMap.getUiSettings().setZoomControlsEnabled(true);
}
使用Intent
启动MapActivity
Intent是对要执行的操作的抽象描述。它可以与startActivity一起用于启动"活动",与broadcastIntent一起用于将其发送给任何感兴趣的BroadcastReceiver组件,与startService(Intent)或bindService(Intentit,ServiceConnection,int)一起用于与后台服务通信。
尝试此操作首先使用Intent向MapActivity
发送纬度和经度,如下代码
Intent i = new Intent(HotelDetailsClass.this, MapActivity.class);
i.putExtra("latitude","28.7041")
i.putExtra("longitude","77.1025");
startActivity(i);
现在在MapActivity中广告此代码
Double latitude, longitude;
Intent i = getIntent();
latitude = Double.valueOf(i.getStringExtra("latitude"));
longitude = Double.valueOf(i.getStringExtra("longitude"));
现在载入地图
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Location and move the camera
LatLng location = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(location).title(title));
mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(latitude, longitude), 14.0f));
}