5

I know this has been discussed before, but I actually can't find a solution.

I am adding a custom icon for my marker:

markerUserLocation = mMap.addMarker(new
                        MarkerOptions().position(new
                                LatLng(point.latitude,
                                        point.longitude))
                                .anchor(0.5f, 1.0f)
                               .icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker_my_location)));

The problem is when zooming in/out the marker gets positioned in a bad place.

I have tried to play with the anchor values, but no success. Isn't the default anchor mid/bottom of the image ? What i need to do, to actually keep the bottom of the marker at the specified point coordinates, independent of zooming level ?

Here is a ic_marker_my_location icon sample (xhdpi size), as I can't upload the original icon. enter image description here

LE: this is a really silly, but if i use a smaller marker image... it works correctly... So maybe there is a bug with marker resource image size ? Or if the image is bigger, I need to set some extra parameters ?

Alin
  • 14,809
  • 40
  • 129
  • 218

5 Answers5

6

I recently experienced a similar issue. It seems to me that there is a bug with the setIcon(Bitmap bitmap) function of the marker.

As soon as i change the image of the marker, the anchor is messed up, so I had to reset it again to the default position.

marker.setIcon(bitmap);
marker.setAnchor(0.5f,1f);

That worked for me using the play services (8.4.0)

Mike T
  • 1,194
  • 14
  • 25
0

May be you are actually passing the float values for latitude and longitude. Please pass in the double values like this..

private double lat = 13.005039;
private double lng = 77.57734;


mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng));
suresh cheemalamudi
  • 6,190
  • 11
  • 49
  • 67
0

I managed to fix the issue by making a new marker png. Basically made a new png of the same size and recreated the image... and now it works. So I have no idea what really happened, maybe the map control didn't like some margins or something.

Alin
  • 14,809
  • 40
  • 129
  • 218
0

I had the same issue, however the anchor solution posted by Mike T didn't work for me.

What worked for me was converting my original image into a vector (svg). This stopped my custom marker from moving on the map whenever I zoomed into or out from the map.

Mark O'Sullivan
  • 10,138
  • 6
  • 39
  • 60
-1
used this code

// Creating a marker
                MarkerOptions markerOptions = new MarkerOptions();

                // Getting a place from the places list
                HashMap<String, String> hmPlace = list.get(i);

                // Getting latitude of the place
                double lat = Double.parseDouble(hmPlace.get("lat"));                

                // Getting longitude of the place
                double lng = Double.parseDouble(hmPlace.get("lng"));

                // Getting name
                String name = hmPlace.get("place_name");

                // Getting vicinity
                String vicinity = hmPlace.get("vicinity");

                LatLng latLng = new LatLng(lat, lng);

                // 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(name);
                markerOptions.snippet(vicinity);

                // Placing a marker on the touched position
                mGoogleMap.addMarker(markerOptions);            
haresh
  • 321
  • 2
  • 3