根据以前的活动显示地图

时间:2013-07-04 14:34:32

标签: android google-maps google-places-api

如何通过点击上一个活动的按钮来显示特定城市的地图...例如:在活动一中,我在edittext中点击了纽约并点击了按钮,它打开了包含地图和点到纽约市的活动二。 ..我也想通过不同的标记来展示纽约的旅游景点....有人能告诉我一个方法或者啧啧...提前谢谢

我已经完成了显示附近位置的地图,虽然它没有更新位置.. :( 任何帮助都值得赞赏

2 个答案:

答案 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来提供城市坐标,您可以查看本教程:

http://wptrafficanalyzer.in/blog/android-geocoding-showing-user-input-location-on-google-map-android-api-v2/

这里有一个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));
        }
    }
}

现在,对于旅游景点,您将需要查询某种服务,这些服务将为您提供此类信息,并将其呈现在地图上。