Маркеры перемещаются при масштабировании с помощью Google Maps Android API v2

при добавлении некоторых маркеров на карте с помощью Google Maps Android API v2 маркеры не устанавливаются в правильные позиции и перемещаются при масштабировании.

при масштабировании они приближаются к правильным позициям, как если бы они были переведены фактором, связанным с масштабированием.

Что случилось?

пример масштабирования в:

enter image description hereenter image description hereenter image description here

фрагмент

public class CenterMapFragment extends Fragment {

    private GoogleMap mMap;
    private List<Center> mCenterList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        return inflater.inflate(R.layout.center_map_fragment, container, false);
    }

    @Override
    public void onActivityCreated (Bundle savedInstanceState){

        super.onActivityCreated(savedInstanceState); 

        mMap = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map))
                .getMap();

        if (mMap != null) {

            mCenterList = MyApplication.dbHelper.getAllCenter();

            for(Center center : mCenterList){

                mMap.addMarker(new MarkerOptions().position(new LatLng(center.lat, center.lng)).icon(BitmapDescriptorFactory
                                .fromResource(R.drawable.myicon)));

            }
        }

    }

}

планировка

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

2 ответов


для пользовательских маркеров вам также нужно использовать

MarkerOptions.anchor(float u, float v)

который описывает, где находится точка указателя на маркере. По умолчанию эта точка находится в середине нижней части изображения.


чтобы показать информацию окна, вы должны использовать setInfoWindowAdapter на вашем "mMap" или иметь набор заголовка для вашего маркера.

о значке, он, кажется, движется при уменьшении масштаба, но якорь всегда указывает на одно и то же место на карте. Вы можете установить якорь, если изображение, которое вы используете, не следует шаблону значков Google (якорь в середине Боттона изображения). Для этого вы должны использовать якорь метода MarkerOptions (u,v)