如何通过点击上一个活动的按钮来显示特定城市的地图...例如:在活动一中,我在edittext中点击了纽约并点击了按钮,它打开了包含地图和点到纽约市的活动二。 ..我也想通过不同的标记来展示纽约的旅游景点....有人能告诉我一个方法或者啧啧...提前谢谢
我已经完成了显示附近位置的地图,虽然它没有更新位置.. :( 任何帮助都值得赞赏
答案 0 :(得分:1)
最简单的方法是将城市名称传递给地图活动。
在活动一中执行以下操作:
Intent i = new Intent(getApplicationContext(), MapActivity.class);
i.putExtra("location","New York");
startActivity(i);
要检索值,请在地图活动中执行以下操作:
String location = getIntent().getExtras().getString("location");
答案 1 :(得分:0)
这是你在一个问题中提出的很多问题。
要按照地址查找城市并将其显示在地图上,您需要创建一个Geocoder
来提供城市坐标,您可以查看本教程:
这里有一个AsyncTask代码片段,用于访问Geocoder服务:
// An AsyncTask class for accessing the GeoCoding Web Service
private class GeocoderTask extends AsyncTask<String, Void, List<Address>>{
@Override
protected List<Address> doInBackground(String... locationName) {
// Creating an instance of Geocoder class
Geocoder geocoder = new Geocoder(getBaseContext());
List<Address> addresses = null;
try {
// Getting a maximum of 3 Address that matches the input text
addresses = geocoder.getFromLocationName(locationName[0], 3);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
}
@Override
protected void onPostExecute(List<Address> addresses) {
if(addresses==null || addresses.size()==0){
Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show();
}
// Clears all the existing markers on the map
googleMap.clear();
// Adding Markers on Google Map for each matching address
for(int i=0;i<addresses.size();i++){
Address address = (Address) addresses.get(i);
// Creating an instance of GeoPoint, to display in Google Map
latLng = new LatLng(address.getLatitude(), address.getLongitude());
String addressText = String.format("%s, %s",
address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
address.getCountryName());
markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(addressText);
googleMap.addMarker(markerOptions);
// Locate the first location
if(i==0)
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
}
现在,对于旅游景点,您将需要查询某种服务,这些服务将为您提供此类信息,并将其呈现在地图上。