【问题标题】:Show address on tap of marker in google map in android?在android的谷歌地图中点击标记显示地址?
【发布时间】:2016-08-09 19:08:25
【问题描述】:

我在我的应用程序中添加了谷歌地图。我在谷歌地图上显示当前位置。我现在点击标记在我当前位置显示一个红色标记我想在我们通常看到的弹出窗口中显示标记上方的地址在应用程序中。我尝试了一些方法,但没有一个对我有用。在这里分享代码。

1.我尝试的第一种方法

  @Override
    public void onLocationChanged(Location location) {

        mMap.clear();
        latitude = location.getLatitude();
        longitude = location.getLongitude();
        MarkerOptions mo=new MarkerOptions();
        LatLng latLng = new LatLng(latitude, longitude);
        marker=mMap.addMarker(mo.position(latLng));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
        mo.title("Current Location");



    }

2.我尝试的第二种方法

   mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker arg0) {
                String title = "Any Thing You want";
                marker.setTitle(title);

                return true;
            }
        });

请告诉我这里哪里弄错了。谢谢

【问题讨论】:

  • 您的问题是什么?当您尝试这些方法时会发生什么?

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


【解决方案1】:

使用地理编码器

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
        @Override
        public boolean onMarkerClick(Marker marker) {
            Geocoder geocoder = new Geocoder(this,Locale.getDefault());
            addresses = geocoder.getFromLocation(marker.getPosition().latitude(), marker.getPosition().longitude(), 1); //1 num of possible location returned
            String address = addresses.get(0).getAddressLine(0); //0 to obtain first possible address 
            String city = addresses.get(0).getLocality();
            String state = addresses.get(0).getAdminArea();
            String country = addresses.get(0).getCountryName();
            String postalCode = addresses.get(0).getPostalCode();
            //create your custom title
            String title = address +"-"+city+"-"+state;
            marker.setTitle(title);
            marker.showInfoWindow();
            return true;
        }
    });

【讨论】:

    【解决方案2】:

    您可能想查看Geocoding and Reverse Geocoding

    地理编码是将地址(如“1600 Amphitheatre Parkway, Mountain View, CA”)转换为地理坐标(如纬度 37.423021 和经度 -122.083739)的过程,可用于放置标记在地图上,或定位地图。

    Reverse Geocoding (Address Lookup) - 术语地理编码通常是指将人类可读的地址翻译成地图上的位置。相反的过程,将地图上的位置转换为人类可读的地址,称为反向地理编码。

    试试

    也可以查看tutorial about Google Maps on android

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:
       googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                  @Override
                  public boolean onMarkerClick(Marker marker) {
                      String title = "Any Thing You want";
                      marker.setTitle(title);
                      marker.showInfoWindow();
      
                      return true;
                  }
              });
      

      【讨论】:

        【解决方案4】:

        很简单

        只需为其添加标题...

        mMap.addMarker(new MarkerOptions().position(
                    new LatLng(12.9969284, 80.25792380000007)).title("A2B Car Parking").icon(
                    BitmapDescriptorFactory.fromBitmap(BitmapFactory
                            .decodeResource(getResources(),
                                    R.drawable.red_icon))).anchor(0.5f, 1f));
        

        希望这行得通!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-22
          • 1970-01-01
          • 2018-08-04
          • 2010-11-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-27
          相关资源
          最近更新 更多