如何在地图上添加标记(供解释)

时间:2017-09-26 12:19:55

标签: android google-maps location google-maps-markers

这是我现在的代码

    public class MapActivity extends FragmentActivity implements OnMapReadyCallback {

        private GoogleMap map;
        Marker marker;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);




        }

        @Override
        public void onMapReady(GoogleMap googleMap) {

            map = googleMap;

            setUpMap();


        }

        public void setUpMap() {

            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            map.setMyLocationEnabled(true);
        }

        void getCurrentLocation()
        {
            Location myLocation  = map.getMyLocation();
            if(myLocation!=null)
            {
                double dLatitude = myLocation.getLatitude();
                double dLongitude = myLocation.getLongitude();
                map.addMarker(new MarkerOptions().position(new LatLng(dLatitude, dLongitude))
                        .title("My Location").icon(BitmapDescriptorFactory
                                .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(dLatitude, dLongitude), 8));

            }
            else
            {
                Toast.makeText(this, "Unable to fetch the current location", Toast.LENGTH_SHORT).show();
            }
        }
}

我已经尝试了很多选项,比如onTouch onMapClickListeners等,对我来说没什么用,我认为我做错了,这是我的第一个googleMap项目,当我点击地图时,他知道如何添加标记。我稍后会需要它来获取地址并且我正在寻求帮助。在纪录片中只有静态值,但我需要动态。

修改

        map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

        @Override
        public void onMapClick(LatLng point) {

            MarkerOptions marker = new MarkerOptions().position(
                    new LatLng(point.latitude, point.longitude)).title("You are here");

            map.clear();
            map.addMarker(marker);
        }
    });

在我添加了类似的东西后,我得到了那种错误,我怎么能解决它?

对空对象引用无效com.google.android.gms.maps.GoogleMap.setOnMapClickListener(com.google.android.gms.maps.GoogleMap $ OnMapClickListener)

0 个答案:

没有答案