How to add marker on google maps android?

后端 未结 5 2029
一向
一向 2021-01-01 13:20

I am a beginner in Android programming. I already looked at similar questions and answers but I still can\'t figure out why this doesn\'t work. When I try this on the emulat

相关标签:
5条回答
  • 2021-01-01 13:29

    Get the users current position latitude and longitude

            LatLng latLng = new LatLng(lat, lng);
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng);
            mMap.clear();
            markerOptions.title("Current Position");
            markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker));
            markerOptions.getPosition();
            mCurrLocationMarker = mMap.addMarker(markerOptions);
    
    0 讨论(0)
  • 2021-01-01 13:30

    try in this way. Pass your latitude and longitude values

    // create marker
    MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps");
    
    // adding marker
    googleMap.addMarker(marker);
    
    0 讨论(0)
  • 2021-01-01 13:36

    This code in MapsActivity works for me :

    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMapLongClickListener {
    
    private GoogleMap mMap;
    LocationManager locationManager;
    LocationListener locationListener;
    
    public void centreMapOnLocation(Location location, String title){
    
        LatLng userLocation = new LatLng(location.getLatitude(),location.getLongitude());
        mMap.clear();
        mMap.addMarker(new MarkerOptions().position(userLocation).title(title));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLocation,12));
    
    }
    
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
        if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
    
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
    
                Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                centreMapOnLocation(lastKnownLocation,"Your Location");
            }
        }
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps2);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    
    
    
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
    
        mMap.setOnMapLongClickListener(this);
    
        Intent intent = getIntent();
        if (intent.getIntExtra("Place Number",0) == 0 ){
    
            // Zoom into users location
            locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
            locationListener = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    centreMapOnLocation(location,"Your Location");
                }
    
                @Override
                public void onStatusChanged(String s, int i, Bundle bundle) {
    
                }
    
                @Override
                public void onProviderEnabled(String s) {
    
                }
    
                @Override
                public void onProviderDisabled(String s) {
    
                }
            };
    
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
                locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
                    Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    centreMapOnLocation(lastKnownLocation,"Your Location");
            } else {
    
                ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
            }
        } else {
    
            Location placeLocation = new Location(LocationManager.GPS_PROVIDER);
            placeLocation.setLatitude(MainActivity.location.get(intent.getIntExtra("Place Number",0)).latitude);
            placeLocation.setLongitude(MainActivity.location.get(intent.getIntExtra("Place Number",0)).longitude);
    
            centreMapOnLocation(placeLocation,MainActivity.places.get(intent.getIntExtra("Place Number",0)));
        }
    
    
    }
    
    
    @Override
    public void onMapLongClick(LatLng latLng) {
        Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
        String adress ="";
        try {
            List<Address> listaddress = geocoder.getFromLocation(latLng.latitude,latLng.longitude,1);
    
            if (listaddress != null && listaddress.size()>0){
                if (listaddress.get(0).getThoroughfare() != null){
    
                    if (listaddress.get(0).getSubThoroughfare() != null){
                        adress += listaddress.get(0).getSubThoroughfare() + "";
    
                    }
                    adress += listaddress.get(0).getThoroughfare();
                }
    
            }
    
        }catch (Exception e){
            e.printStackTrace();
        }
    
        mMap.addMarker(new MarkerOptions().position(latLng).title(adress));
    
        MainActivity.places.add(adress);
        MainActivity.location.add(latLng);
        MainActivity.arrayAdapter.notifyDataSetChanged();
    
        Toast.makeText(this, "Location Saved..!", Toast.LENGTH_SHORT).show();
    
    }
    

    }

    0 讨论(0)
  • 2021-01-01 13:46
    //Show Marker on a Location
    googleMap.addMarker(new MarkerOptions().position(TIMES_SQUARE));
    
    //Change Default Color of Marker
    
    googleMap.addMarker(new MarkerOptions()
                .position(BROOKLYN_BRIDGE)
                .title("First Pit Stop")
                .icon(BitmapDescriptorFactory
                .defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
    
    //Replace Default Marker Icon with Custom Image
    
    googleMap.addMarker(new MarkerOptions()
                .position(WALL_STREET)
                .title("Wrong Turn!")
                .icon(BitmapDescriptorFactory
                .fromResource(R.drawable.my_flag)));
    
    0 讨论(0)
  • 2021-01-01 13:52

    Look here in Google Maps example https://developers.google.com/maps/documentation/android-api/marker

    If you want to add marker when clicking you can also look here: http://wptrafficanalyzer.in/blog/adding-marker-on-touched-location-of-google-maps-using-android-api-v2-with-supportmapfragment/

    The concept is to do like the folowing code:

    // Setting a click event handler for the map
        googleMap.setOnMapClickListener(new OnMapClickListener() {
    
            @Override
            public void onMapClick(LatLng latLng) {
    
                // Creating a marker
                MarkerOptions markerOptions = new MarkerOptions();
    
                // Setting the position for the marker
                markerOptions.position(latLng);
    
                // Setting the title for the marker.
                // This will be displayed on taping the marker
                markerOptions.title(latLng.latitude + " : " + latLng.longitude);
    
                // Clears the previously touched position
                googleMap.clear();
    
                // Animating to the touched position
                googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
    
                // Placing a marker on the touched position
                googleMap.addMarker(markerOptions);
            }
        });
    
    0 讨论(0)
提交回复
热议问题