5

我知道这已经讨论过,但我实际上找不到解决方案。

我正在为我的标记添加一个自定义图标:

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)));

问题是当放大/缩小标记被定位在一个不好的地方。

我曾尝试使用锚值,但没有成功。图像的默认锚点不是中间/底部吗?我需要做什么,以实际将标记的底部保持在指定的点坐标处,与缩放级别无关?

这是一个 ic_marker_my_location 图标示例(xhdpi 大小),因为我无法上传原始图标。 在此处输入图像描述

LE:这真的很愚蠢,但如果我使用较小的标记图像......它可以正常工作......所以也许有一个标记资源图像大小的错误?或者如果图像更大,我需要设置一些额外的参数?

4

5 回答 5

6

我最近遇到了类似的问题。在我看来,标记的 setIcon(Bitmap bitmap) 函数存在错误。

一旦我更改了标记的图像,锚就搞砸了,所以我不得不再次将其重置为默认位置。

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

使用播放服务(8.4.0)对我有用

于 2016-05-23T07:25:11.713 回答
0

我设法通过制作一个新的标记 png 来解决这个问题。基本上制作了一个相同大小的新png并重新创建了图像......现在它可以工作了。所以我不知道到底发生了什么,也许地图控件不喜欢一些边距或其他东西。

于 2013-06-27T13:05:36.873 回答
0

可能您实际上是在传递纬度和经度的浮点值。请像这样传递双精度值..

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


mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng));
于 2013-06-27T11:37:49.480 回答
0

我遇到了同样的问题,但是 Mike T 发布的锚定解决方案对我不起作用。

对我有用的是将原始图像转换为矢量(svg)。每当我放大或缩小地图时,这都会阻止我的自定义标记在地图上移动。

于 2016-10-17T08:30:53.313 回答
-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);            
于 2013-06-27T11:41:55.567 回答