使用Google Maps Android API v2进行缩放时,标记会移动

时间:2013-04-19 11:12:32

标签: android google-maps-markers google-maps-android-api-2

使用Google Maps Android API v2在地图上添加一些标记时,标记没有设置到正确的位置,并在缩放时移动。

放大时,它们会靠近正确的位置,就好像它们是由与缩放相关的因素翻译而来。

怎么了?

放大示例:

enter image description here enter image description here enter 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 个答案:

答案 0 :(得分:6)

对于自定义标记,您还需要使用

MarkerOptions.anchor(float u, float v)

描述了标记上指针点的位置。默认情况下,此点位于图像的中下部。

答案 1 :(得分:0)

要显示窗口信息,您必须在“mMap”上使用setInfoWindowAdapter或为标记设置标题。

关于图标,缩小时似乎正在移动,但锚点始终指向地图上的相同位置。如果您使用的图像不遵循Google的图标模式(锚定在图像底部中间),则可以设置锚点。为此,您必须使用MarkerOptions' method anchor(u,v)