Java 访问地图中MyLocation蓝点的可绘制资源
我希望获得与指示您在地图上的位置和方位(蓝色)的圆圈相同的纹理,以便添加具有相同纹理和行为的其他圆圈(红色) 我所拥有的: 我可以访问与红点相关的所有参数:Java 访问地图中MyLocation蓝点的可绘制资源,java,android,xml,google-maps-markers,google-maps-android-api-2,Java,Android,Xml,Google Maps Markers,Google Maps Android Api 2,我希望获得与指示您在地图上的位置和方位(蓝色)的圆圈相同的纹理,以便添加具有相同纹理和行为的其他圆圈(红色) 我所拥有的: 我可以访问与红点相关的所有参数:LatLng,轴承 我使用map.addCircle获得下面显示的结果 map.addCircle(new CircleOptions() .center(position1) .fillColor(Color.RED) .strokeColor(Color.WHITE)
LatLng,轴承
我使用map.addCircle
获得下面显示的结果
map.addCircle(new CircleOptions()
.center(position1)
.fillColor(Color.RED)
.strokeColor(Color.WHITE)
.radius(1.2)
.strokeWidth(1 / 4));
需要:
我需要圆圈独立于倾斜和缩放,即它的大小与缩放级别相适应,它的行为就像蓝色圆圈一样
必须显示轴承
具有精确指示(可选择宽圆圈)
编辑1:
我想这个蓝点可能在com.google.android.gms.maps.R.drawable
目录中,但是我找不到获取信息或访问drawable列表的方法
编辑2:
使用PlayStore上提供的Apps Resources,我发现地图的可绘制文件夹中存在一个蓝点。因此我尝试:
.icon(BitmapDescriptorFactory.fromResource(com.google.android.gms.maps.R.drawable.blue_dot)
但我有一个无法解析的符号…有什么想法吗
编辑3…:
为了完成我之前所说的内容,这里有一个屏幕截图,显示了地图中的资源:
这是在我的AndroidStudio中可用的绘图列表:
您无法访问蓝点资源,因为它不是公共的。无论如何,它是一个蓝点,带有作为资源一部分添加的承载部分。 我们不知道如何创建它(没有解释或源代码),但您可以尝试通过以下方式复制它: 创建一个点(蓝色或红色,如您所需)资源,并在其顶部有“方位”指示器(如标准的),然后将“箭头”指向资源的上中心部分。 将其作为标记资源,将其设置为平面(setFlat(boolean flat)),并根据所需的方向改变旋转;来自文档: 旋转 以度为单位的标记器绕轴顺时针旋转 标记器的定位点。旋转轴垂直于 标记。旋转0对应于标记的默认位置 标记。当标记在地图上是平面时,默认位置为 北对齐,旋转使标记始终保持不变 地图上的平面。当标记是广告牌时,默认位置为 是指向上的,旋转时标记始终为 面向摄影机。默认值为0 您必须注意标记的“定位点”,它必须设置为点的中心,而不是资源的中心(否则它将无法正常工作)。为此,请将点放置在资源的中心(根据方位箭头尺寸),或在添加标记时更改定位点: 固定锚(浮动锚,浮动锚) 文件是 在资源中使点居中比较容易,但资源会更大 关于辉光 这是“更糟糕”的做法,因为您不能以与他们相同的方式绘制它(同样,我假设他们没有使用标准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);
我唯一帮不上忙的是缩小时点的尺寸。不幸的是,GMAP会自动调整它的大小,所以为了保持它的小,你必须使用GoogleMap.onCamerachenglistener并在放大时调整标记的大小(这是一个混乱的好方法!)我部分同意N.多里加蒂的观点,你的做法是对的。 没有“不能做”或“隐藏API”之类的东西。蓝点是一种位图资源,它被调整到可接受的大小,并在普通旧标记的(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类型。如果需要使用位图类型,它可以很容易地从位图转换为我以前使用过的位图类型。谢谢,首先关于调整大小问题,我将手动设置两个缩放级别的尺寸,这是我需要访问的级别,因此这不会是一个问题。然后,我有一个问题:如何调整尺寸你得到一个有箭头的点吗?它在android资源中吗?不,它应该在私有地图资源中,所以你必须用Photoshop或类似工具创建你的图片,并将其添加为普通图片,你知道怎么做吗?哦,好吧,所以我宁愿使用一个标记,因为你可以使用带有标记的位图!我不认为我可以用Cir来管理它克莱斯:是的,圆圈仅用于外发光边界,它表示位置中可能存在的错误加上如此详细的解释:-)