0

如何通过单击先前活动的按钮来显示特定城市的地图..例如:在活动一中,我在edittext中键入纽约并单击按钮,它打开了包含地图的活动二并指向纽约市...我还想用不同的标记来展示纽约的旅游景点....有人可以告诉我一个方法或tut这个..提前谢谢

我已经完成了显示附近位置的地图,尽管它没有更新位置.. :( 任何帮助都将不胜感激

4

2 回答 2

1

最简单的方法是将城市名称传递给 Map 活动。

在活动一中执行以下操作:

Intent i = new Intent(getApplicationContext(), MapActivity.class);
i.putExtra("location","New York");
startActivity(i);

要检索值,请在 Map 活动中执行以下操作:

String location = getIntent().getExtras().getString("location");
于 2013-07-04T15:10:20.230 回答
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));
        }
    }
}

现在对于旅游景点,您将不得不查询某种服务,该服务将为您提供此类信息,解析它并将其显示在地图上。

于 2013-07-04T16:04:55.760 回答