【问题标题】:How to show pin's latitude and longitude on map (Android Studio) [duplicate]如何在地图上显示图钉的经纬度(Android Studio)[重复]
【发布时间】:2017-09-02 00:06:38
【问题描述】:

如何从用户丢弃的 pin 中获取纬度和经度?像谷歌地图一样,我们在地图上点击一个大头针,它会显示大头针的经纬度。谁能帮助我?非常感谢。

和图片一样,显示的是经纬度。

Images

【问题讨论】:

    标签: android google-maps


    【解决方案1】:
    public class YOURACTIVITY extends AppCompatActivity implements OnMapReadyCallback
    
    private GoogleMap mMap;
    <--
    OnCreate
     SupportMapFragment map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
            map.getMapAsync(this);
    
    -->
    
      public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;
            double mLat = LATITUDE;
            double mLon = LONTITUDE;
            LatLng mylocation = new LatLng(mLat, mLon);
            mMap.addMarker(new MarkerOptions().position(mylocation).snippet("TEXT BELLOW TITLE").title("TITLE")).showInfoWindow();
            mMap.setMyLocationEnabled(true);
            mMap.getUiSettings().setMyLocationButtonEnabled(true);
            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mylocation,15));
        }
    

    更新 尝试添加这样的东西。创建自定义布局并添加信息

    mMap.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter() {
                @Override
                public View getInfoWindow(Marker marker) {
                    return null;
                }
    
                @Override
                public View getInfoContents(Marker marker) {
                    View view = MainActivity.getLayoutInflater().inflate(R.layout.map_custom, null);
    
    
                    TextView titleTextView = (TextView) view.findViewById(R.id.map_title);
                    TextView snippetTextView = (TextView) view.findViewById(R.id.map_snippet);
    
                    titleTextView.setText(marker.getTitle());
                    snippetTextView.setText(marker.getSnippet());
    
                    return view;
                }
            });
    

    【讨论】:

    • 我更新了答案,如果它适合你,请尝试自定义布局
    • 请问,getLayoutInflater 是什么?
    • 这是一个来自android Activity的方法。但是,如果需要,您可以使用 LayoutInflater.from(context) 从活动外部获得充气机。
    • 第一个成功了,谢谢
    【解决方案2】:

    试试这个高效的解决方案:

    public void onMapLongClick(LatLng point) {
        pin.setText("New marker added@" + point.toString());        
        //Create a marker object
        Marker myMarker = map.addMarker(new MarkerOptions().position(point).title(point.toString()));
    
        //And now you can use it's values
        myMarker.getPosition().latitude;
        myMarker.getPosition().longitude;
    }
    

    【讨论】:

    • 抱歉,我忘记发布图片了。我在帖子上添加了一张新照片。请检查一下。谢谢。
    • 每次点击地图时,您似乎都会在地图上添加一个新标记
    【解决方案3】:

    您可以使用 setOnMarkerDragListener 方法:

    mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
        @Override
        public void onMarkerDragStart(Marker marker) {
    
        }
    
        @Override
        public void onMarkerDrag(Marker marker) {
    
        }
    
        @Override
        public void onMarkerDragEnd(Marker marker) {
            double latitude = marker.getPosition().latitude;
            double longitude = marker.getPosition().longitude;
        }
    });
    

    【讨论】:

    • 抱歉,我忘记发布图片了。我在帖子上添加了一张新照片。请检查一下。谢谢。
    • 您可以更新标记并使用 'marker.showInfoWindow();' 显示信息窗口或者,作为您提供的图像,在地图上放置另一个布局并在 onMarkerDragEnd 方法中更新其内容(将地图和此布局放置在 FrameLayout 内,以便此布局可以与地图重叠)并将此“窗口”始终放置在同一个地方并更新其内容和可见性。此外,根据您想要的效果,使用 BottomSheetDialogFragment 可能是显示信息的好选择。
    • 在您的情况下,我不会使用 infoWindow (goo.gl/H559at),而是使用带有地图和其他 ViewGroup(RelativeLayout、LinearLayout...)的 FrameLayout 并更新其内容和onMarkerDragEnd 上的可见性,因为您似乎希望将此信息始终放置在同一位置。
    【解决方案4】:

    它的短处是使用Marker.getPosition() 方法,也许在祝酒词中:

    @Override
    public void onMarkerDragEnd(Marker marker) {
        LatLng pos = marker.getPosition();
        Toast.makeText(MainActivity.this, "Point coordinates: " + pos.latitude 
            + ", " + pos.longitude, Toast.LENGTH_LONG).show();
    }
    

    【讨论】:

    • 对不起,不是吐司。文本将带有 pin。
    • 嗯,这是一个例子;当然,如果您希望它看起来与您在图片中显示的内容相似,您必须构建自己的小部件
    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多