android中Google map v2中标记的圆形图标

android中Google map v2中标记的圆形图标,android,google-maps,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Google Maps Markers,Google Maps Android Api 2,我已经在我的android应用程序中实现了谷歌地图。我有两个关于标记的问题 问题1:如何获得圆形轮廓图像标记?i、 我想在mapmarker中获得圆形图像图标而不是方形图像图标 我从特定的URL获取lat、long和profiepic链接列表,并使用异步加载它们。在执行死刑后,我有 实现了一个for循环 protected void onPostExecute(String file_url) { for (int i = 0; i < nameList.s

我已经在我的android应用程序中实现了谷歌地图。我有两个关于标记的问题

问题1:如何获得圆形轮廓图像标记?i、 我想在mapmarker中获得圆形图像图标而不是方形图像图标

我从特定的URL获取lat、long和profiepic链接列表,并使用异步加载它们。在执行死刑后,我有 实现了一个for循环

    protected void onPostExecute(String file_url)
    {
        for (int i = 0; i < nameList.size(); i++)
        {
            userName = nameList.get(i).getName();
            lati = nameList.get(i).getLati();
            longi = nameList.get(i).getLongi();
            photoUrl = nameList.get(i).getImage();

            gotoLocation(Double.parseDouble(lati), Double.parseDouble(longi), userName, photoUrl, ZOOMVALUE);
        }
    }
我尝试了以下方法:

    CircleOptions circle=new CircleOptions();
    circle.center(ll).fillColor(Color.LTGRAY).radius(1);
    googleMap.addCircle(circle);
这会圈出当前位置,但不会圈出图像


问题2:上述标记不总是弹出(不稳定)?如果我参考地图,它会正确显示吗?这里可能出了什么问题?是因为我使用piccasso库加载它们吗?是否有不同的方法将图像从URL加载到标记?

这是一个问题。请看这里:

根据杰克·沃顿的说法,不要将目标声明为匿名,因为它会被垃圾收集。例如,在您的活动中将其声明为私有。看看这是否有效

在单独的文件中:

public class DummyTarget implements Target
{
    public String uname;
    //etc....

    @Override
    public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
     // you codes....      

    }

    @Override
    public void onBitmapFailed(Drawable errorDrawable) {
     // your codes....

    }

    @Override
    public void onPrepareLoad(Drawable placeHolderDrawable) {

    }
}
在某个地方申报

private target = new DummyTarget();
在您的毕加索通话中:


你也可以直接加载到“this”

然后让当前类实现目标

    public class YourClass implements Target {

        private ArrayList<BitMap> bitMaps;

    private void gotoLocation(double lat, double lng, String name, String url, float zoom)  {
       final String uname = name; 
       curlat = lat;
       curlong = lng;
        Picasso.with(getActivity()).load(url).resize(100, 100).into(this);
    }

        @Override
        public void onBitmapFailed(Drawable arg0) {

        }

        @Override
        public void onBitmapLoaded(Bitmap bitmap, LoadedFrom loadedFrom) {
            bitMaps.add(bitmap);

        }

        @Override
        public void onPrepareLoad(Drawable arg0) {


        }

    }
public类YourClass实现目标{
私有ArrayList位图;
私有void gotoLocation(双lat、双lng、字符串名称、字符串url、浮点缩放){
最后一个字符串uname=name;
curlat=lat;
柯隆=液化天然气;
Picasso.with(getActivity()).load(url).resize(100100).into(this);
}
@凌驾
公共void onBitmapFailed(可提取arg0){
}
@凌驾
公共无效onBitmapLoaded(位图位图,LoadedFrom LoadedFrom){
位图。添加(位图);
}
@凌驾
准备加载时的公共无效(可提取arg0){
}
}

解决了问题1的一部分。由于我使用毕加索,这对我绘制圆形图标非常有用

Transformation transformation = new RoundedTransformationBuilder()
.borderColor(Color.WHITE)
.borderWidthDp(3)
.cornerRadiusDp(30)
.oval(false)
.build();
使用RoundedTransformationBuilder库

感谢上帝


我认为如果其他人想要类似于我的问题1的东西,这将对他们有用。

@alpinescramber:谢谢你的快速回复?你能告诉我需要做些什么吗?我的意思是有一个例子吗?在目标中,用户名、位图、curlat和curlong是动态的。那个么我如何声明它呢?也许你们可以在一个单独的类文件中声明,一个扩展目标的类。该类还具有username、curlat等的额外属性。。。在活动中声明此类的列表,并在for循环期间使用类的新实例填充该列表。这样,每个“目标”类类型都有一个引用。就我个人而言,我以前和毕加索处理过类似的问题,我放弃了。我改为截击。我认为您已经输入的示例代码将对我有所帮助。你能再发一遍代码吗?好的,我发了一个更新的。。。不确定是否可以编译,但请尝试使用它。祝你好运我没有注意到你正在循环,所以你需要将每个位图保存在某个地方,可能在arrayList中?你能回答另一个问题吗?代码中的“ll”是什么,它应该与你放置的标记相同,不是吗?是的。没错。在运行代码之后,我意识到了这一点。我试着用圆形的图像图标而不是方形的?圆形和图标是两种不同的东西。如果你想你的图标是一个圆形边框,比如说一张照片,我认为你应该用这种方式设置位图。用透明的圆形板创建位图,或者下载到设备上,但我认为在GMAP中没有直接这样做的方法。一个圆更像是一个叠加图,我用它来表示gps定位的精度,例如,bitmapMarker是在哪里定义的?我不确定这是否是一个弱引用/垃圾收集问题
Picasso.with(getActivity()).load(url).resize(100, 100).into(this);
    public class YourClass implements Target {

        private ArrayList<BitMap> bitMaps;

    private void gotoLocation(double lat, double lng, String name, String url, float zoom)  {
       final String uname = name; 
       curlat = lat;
       curlong = lng;
        Picasso.with(getActivity()).load(url).resize(100, 100).into(this);
    }

        @Override
        public void onBitmapFailed(Drawable arg0) {

        }

        @Override
        public void onBitmapLoaded(Bitmap bitmap, LoadedFrom loadedFrom) {
            bitMaps.add(bitmap);

        }

        @Override
        public void onPrepareLoad(Drawable arg0) {


        }

    }
Transformation transformation = new RoundedTransformationBuilder()
.borderColor(Color.WHITE)
.borderWidthDp(3)
.cornerRadiusDp(30)
.oval(false)
.build();