【问题标题】:Convert Lat Long to address Google Maps ApiV2将 Lat Long 转换为地址 Google Maps ApiV2
【发布时间】:2013-03-29 09:47:24
【问题描述】:

我正在使用 Google Maps Api V2 制作演示应用。

我添加了一个简单的标记,并使其可拖动

这是我的代码:

onCreate 方法()

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.demo_v2);


 googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
 googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
 googleMap.setOnMapClickListener(this);
 googleMap.setOnMarkerDragListener(this);
 googleMap.setOnMapLongClickListener(this);



设置信息方法()

googleMap.setInfoWindowAdapter(new InfoWindowAdapter() {

  @Override
  public View getInfoWindow(Marker arg0) {

   return null;
  }

  @Override
  public View getInfoContents(Marker marker) {

   LayoutInflater inflater = (LayoutInflater) MapsDemo.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View v = inflater.inflate(R.layout.custom_info, null);

   TextView tv = (TextView) v.findViewById(R.id.textView1);
   tv.setText(marker.getSnippet());

   return v;
  }
 });

 googleMap.setMyLocationEnabled(true);
 googleMap.getUiSettings().setRotateGesturesEnabled(true);
 googleMap.getUiSettings().setTiltGesturesEnabled(true);


addMarker 方法

 marker = googleMap.addMarker(new MarkerOptions()
  .position(ROMA)
  .title("Hello")
  .snippet("Nice Place")
  .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
  .draggable(true));

 @Override
 public void onMarkerDrag(Marker marker) {
  // TODO Auto-generated method stub
 }

 @Override
 public void onMarkerDragEnd(Marker marker) {
  LatLng field = marker.getPosition();
  System.out.println("LatitudenLongitude:" + field.latitude + " " + field.longitude);

 }

 @Override
 public void onMarkerDragStart(Marker marker) {
  // TODO Auto-generated method stub

 }

 @Override
 public void onMapLongClick(LatLng latlng) {
  // TODO Auto-generated method stub

 }

 @Override
 public void onMapClick(LatLng latlng) {
  // TODO Auto-generated method stub
 }
}

现在我希望在用户点击标记时显示地址。

简单的问题是:如何在 API v2 中从 Lat Long 获取地址(名称)?

【问题讨论】:

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


    【解决方案1】:

    试试这个:

    public List<Address> getAddress() {
        if (latitude != 0 && longitude != 0) {
            try {
                Geocoder geocoder = new Geocoder(context);
                List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
                String address = addresses.get(0).getAddressLine(0);
                String city = addresses.get(0).getAddressLine(1);
                String country = addresses.get(0).getAddressLine(2);
                Log.d("TAG", "address = " + address + ", city = " + city + ", country = " + country);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            Toast.makeText(context, "latitude and longitude are null", Toast.LENGTH_LONG).show();
        }
        return addresses;
    }
    

    【讨论】:

    • 对不起,我还没明白你到底想要什么?你能简单解释一下吗?或者举个例子。
    • 我希望当用户开始拖动标记并到达地图屏幕的边界(可见部分)时,地图屏幕应该自动滑动到另一侧,以便能够显示更多。
    • 试试这个link希望对你有帮助。
    • geocoder 总是给我超时异常现在该怎么办?
    【解决方案2】:

    您应该使用Android API 中提供的Geocoder。您需要拨打getFromLocation(latitude,longitude,maxResults),这将返回List&lt;Address&gt;。

    【讨论】:

    • 嗨,奥维迪乌。你能帮我解决这个问题吗,我希望当我将标记拖到边界时,地图应该自动滚动到另一个方向。可能吗 ? - 谷歌地图 api v2 ?
    • 也许你应该为此发布另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多