android google map marker placing

12,872

Solution 1

The logic behind how the markers are anchored is something like this for a 4px-by-2px image:

        0,0      0.5,0.0        1,0
        *-----+-----+-----+-----*
        |     |     |     |     |
        |     |     |     |     |
  0,0.5 +-----+-----+-----+-----+ 1,0.5
        |     |     |   X |     |           (U, V) = (0.7, 0.6)
        |     |     |     |     |
        *-----+-----+-----+-----*
        0,1      0.5,1.0        1,1

Also take into consideration that based on your bitmap resource, it could be positioned a little different than you would expect, because they actually approximate to the nearest snap position. So in the example above, your anchor points will snap to this position:

 *-----+-----+-----+-----*
 |     |     |     |     |
 |     |     |     |     |
 +-----+-----+-----X-----+   (X, Y) = (3, 1)
 |     |     |     |     |
 |     |     |     |     |
 *-----+-----+-----+-----*

Documentation

Solution 2

Use MarkerOption's anchor method: https://developers.google.com/android/reference/com/google/android/gms/maps/model/MarkerOptions.html#anchor(float,%20float)

For your case:

MarkerOptions marker = new MarkerOptions()
.anchor(0.5f, 1.0f)
// Rest of the properties follow

Solution 3

Try this one:

googleMap.addMarker(new MarkerOptions().position(
                new LatLng(51.507351, -0.127758)).icon(
                BitmapDescriptorFactory.fromBitmap(BitmapFactory
                        .decodeResource(getResources(),
                                R.drawable.q_icon))).anchor(0.5f, 1f));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
    new LatLng(51.507351, -0.127758), 20));
Share:
12,872
M.A.Murali
Author by

M.A.Murali

Updated on July 15, 2022

Comments

  • M.A.Murali
    M.A.Murali almost 2 years

    In my Android application I need to place marker at exact position on map. I pin a marker on map with 51.507351, -0.127758 (London) location. I used the following code to do the work.

    googleMap.addMarker(new MarkerOptions().position(
            new LatLng(51.507351, -0.127758)).icon(
            BitmapDescriptorFactory.fromBitmap(BitmapFactory
                    .decodeResource(getResources(),
                            R.drawable.q_icon))));
    googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
            new LatLng(51.507351, -0.127758), 20));
    

    And this my marker drawable image:

    enter image description here

    Now my problem is, the "Q" symbol is placed at the location of 51.507351, -0.127758. I need to place marker at the position where bottom arrow starts.

    Please see the picture so that you can understand my question.

    How can I do this? please help me.

    enter image description here

  • statosdotcom
    statosdotcom about 7 years
    Worked here. Spaciba o_O