我知道之前已经讨论过,但实际上我找不到解决方案。
我正为我的标记添加自定义图标:
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:这真的很傻,但是如果我使用较小的标记图像......它可以正常工作......那么标记资源图像大小可能存在错误?或者如果图像更大,我需要设置一些额外的参数吗?
答案 0 :(得分:5)
我最近遇到了类似的问题。在我看来,标记的setIcon(位图位图)功能存在错误。
一旦我更改了标记的图像,锚就会搞砸,所以我不得不再次将其重置为默认位置。
marker.setIcon(bitmap);
marker.setAnchor(0.5f,1f);
使用播放服务(8.4.0)
对我有用答案 1 :(得分:0)
可能你实际上正在传递纬度和经度的浮点值。请传递像这样的双倍值..
private double lat = 13.005039;
private double lng = 77.57734;
mMap.addMarker(new MarkerOptions().position(new LatLng(lat, lng));
答案 2 :(得分:0)
我设法通过制作新的标记png来解决问题。基本上制作了相同尺寸的新png并重新创建了图像......现在它可以工作了。所以我不知道究竟发生了什么,也许地图控件不喜欢某些边缘或其他东西。
答案 3 :(得分:0)
我遇到了同样的问题,但是Mike T发布的锚点解决方案并不适用于我。
对我有用的是将原始图像转换为矢量(svg)。每当我放大或缩小地图时,这都会阻止我的自定义标记在地图上移动。
答案 4 :(得分:-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);