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

6
使用Google Maps Android API v2在地图上添加标记时,标记没有设置到正确的位置,并且在缩放时移动。当缩放时,它们靠近正确的位置,就像它们被与缩放相关的因素所转换一样。出了什么问题?示例缩放如下:(图片略)
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" />

现在您添加了屏幕截图,我可以说问题肯定出现在锚点中。 - Dmitry Zaytsev
你的图标上有空白吗? - Leaudro
同样的问题有解决方案吗? - Usman Ghauri
@UsmanGhauri 是的,被接受的那个。 - jul
@jul:对我不起作用。我尝试添加锚点,但仍然定位到略微偏离的位置。我进行了尝试,但仍然没有运气。我正在使用一个 SVG 图标来表示位置图钉。 - Usman Ghauri
2个回答

6

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

MarkerOptions.anchor(float u, float v)

该方法描述了指针在标记上的位置。默认情况下,该点位于图像的中间底部。


BitmapDescriptor没有anchor方法。它是一个MarkerOptions,作用为:“在标记的LatLng位置放置图像上的点。这默认为图像底部中心。” 它不应该修改位置。 - jul
@jul 抱歉,确实 - 这是 MarkerOptions 的一种方法。无论如何,这就是你要找的东西。“它不应该修改位置” - 意味着图像的位置不会影响地图上实际的纬度和经度。它只是将图像向右移动 u100% ,向上移动 v100% 。 - Dmitry Zaytsev
@jul 另外,如果您能提供问题的屏幕截图,可能会有所帮助。 - Dmitry Zaytsev
我已添加了图片。我只是尝试使用默认标记,它可以正常工作。 - jul

0
要显示窗口信息,您必须在“mMap”上使用setInfoWindowAdapter或为标记设置标题。
关于图标,当您缩小地图时,它似乎在移动,但锚点始终指向地图上的同一位置。如果您使用的图像不遵循Google的图标模式(图像底部中心的锚点),则可以设置锚点。为此,您必须使用{{link1:MarkerOptions'方法anchor(u,v)}}。

正如 @jul 所提到的 - anchorMarkerOptions 的一个方法。我只是忘记了它 ) - Dmitry Zaytsev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接