Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问地图中MyLocation蓝点的可绘制资源_Java_Android_Xml_Google Maps Markers_Google Maps Android Api 2 - Fatal编程技术网

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来管理它克莱斯:是的,圆圈仅用于外发光边界,它表示位置中可能存在的错误加上如此详细的解释:-)