我希望在地图上获得与指示您的位置和方位(蓝色)的圆圈相同的纹理,以便添加其他圆圈(红色)和相同的纹理和行为。
我可以访问有关红点的所有参数:LatLng, Bearing
...
我使用了map.addCircle
来获得下面显示的结果。
map.addCircle(new CircleOptions()
.center(position1)
.fillColor(Color.RED)
.strokeColor(Color.WHITE)
.radius(1.2)
.strokeWidth(1 / 4));
我需要圆圈独立于变焦的倾斜和独立,即它的大小适应缩放级别,它的行为就像蓝色圆圈。
显示轴承是必不可少的。
具有精确指示(宽圆是可选的)。
我认为这个蓝点可能在com.google.android.gms.maps.R.drawable
目录中,但是我找不到获取信息的方法,或者无法访问可绘制列表!< / p>
使用 Apps Ressources (PlayStore上提供,我发现地图的drawable文件夹中存在blue_dot。所以我尝试了:
.icon(BitmapDescriptorFactory.fromResource(com.google.android.gms.maps.R.drawable.blue_dot)
但是我得到了无法解析符号 ......有什么想法吗?
要完成我之前说的话,这里有一个屏幕截图,显示资源位于Maps drawables中:
这是我的AndroidStudio中可用的drawable列表:
答案 0 :(得分:2)
您无法访问蓝点资源,因为它不公开。无论如何,它是一个蓝点,轴承部分作为资源的一部分添加。 我们无法知道如何创建它(没有解释或源代码),但您可以尝试通过以下方式复制它:
创建一个点(蓝色或红色,你想要的)并在其上面有“方位”指示器的资源(就像标准的一样),然后把'箭头'指向上方的中心部分资源。 将其作为标记资源,将其设置为平面(setFlat(boolean flat))并根据所需的方位更改旋转;来自文档:
轮播
标记的旋转顺时针方向为大约 标记的锚点。旋转轴垂直于 标记。旋转0对应于的默认位置 标记。当标记在地图上是平的时,默认位置为 北对齐并且旋转使得标记始终保持 平放在地图上。当标记是广告牌时,默认位置 指向并且旋转使得标记始终是 对着镜头。默认值为0.
你必须注意标记的“锚点”,它必须设置在点的中心,而不是资源的中心(否则它将无法正常工作)。为此,将点放在资源的中心(根据轴承箭头尺寸)或在添加标记时更改锚点:
setAnchor(float anchorU,float anchorV)
将点集中在资源中更容易,但资源会更大。
关于光晕 这是“更糟糕”的事情,因为你无法以与他们相同的方式绘制它(再次,我认为他们没有使用标准API,我不知道)。 您可以添加一个圆心形状,其中心与标记相同,并使用颜色和圆形尺寸播放:
// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
.center(new LatLng(POS_LAT, POS_LNG))
.radius(30) // radius in meters
.fillColor(0x8800CCFF) //this is a half transparent blue, change "88" for the transparency
.strokeColor(Color.BLUE) //The stroke (border) is blue
.strokeWidth(2)); // The width is in pixel, so try it!
// Get back the mutable Circle
Circle circle = myMap.addCircle(circleOptions);
唯一让我无法帮助的是缩小时点的尺寸。不幸的是,gmaps会自动调整它的大小,所以为了保持它的小,你必须使用GoogleMap.OnCameraChangeListener并在缩放时调整标记大小(这样做很糟糕!)
答案 1 :(得分:0)
我部分同意N.Dorigatti,你是以正确的方式。 没有&#34;无法做到&#34;或者&#34;隐藏的API&#34;。蓝点是位图资源,其大小调整为可接受的大小,并在普通旧标记的(0.5f,0.5f)处给出锚点。与圆形不同,它在整个缩放过程中保持恒定大小。
BitmapDescriptor blueDot = BitmapDescriptorFactory.fromResource(R.drawable.your_blue_dot);
MarkerOptions mo = new MarkerOptions()
.position(new LatLng(yourLatitude, yourLongitude))
.title("dot example")
.snippet("seriously")
.icon(blueDot)
.anchor(0.5f, 0.5f);
yourMap.addMarker(mo);
如果我错了,请随意纠正我。 它适用于我的应用程序。 这样,您甚至可以根据需要显示米老鼠。 使用透明环绕的.png。 图像必须是BitmapDescriptor类型。如果我需要Bitmap类型的工作,它可以很容易地从Bitmap转换。