来自URL的Android google mapv2图标

来自URL的Android google mapv2图标,android,google-maps,Android,Google Maps,现在的问题是,我无法从URL获取自定义图标并将其显示到谷歌地图中。关于谷歌的例子,谷歌地图上只显示一个图标。但我想知道的是显示URL中的图标 private Marker melbourne = mMap.addMarker(new MarkerOptions() .position(MELBOURNE) .title("Melbourne")

现在的问题是,我无法从URL获取自定义图标并将其显示到谷歌地图中。关于谷歌的例子,谷歌地图上只显示一个图标。但我想知道的是显示URL中的图标

private Marker melbourne = mMap.addMarker(new MarkerOptions()
                            .position(MELBOURNE)
                            .title("Melbourne")
                            .snippet("Population: 4,137,400")
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
这是我的代码

            if(c != null){          
                if(c.moveToFirst()){
                    do {
                        googleMap.addMarker(new MarkerOptions()
                        .position(new LatLng(Double.parseDouble(c.getString(2)), Double.parseDouble(c.getString(3))))
                        .title(c.getString(0))
                        .icon(BitmapDescriptorFactory.fromBitmap(bmp))
                        .snippet(c.getString(1)));
                    } while(c.moveToNext());
                }               
            }

您可以下载位图作为

Bitmap bmp = BitmapFactory.decodeStream(myurl.openConnection().getInputStream());
使用线程获取位图

然后

从您的评论中可以看到
NetworkOnMainThreadException

所以用一根线

Thread thread = new Thread(new Runnable(){
@Override
public void run(){
    URL url ;
    try {
        url = new URL("myurl");
        bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    } catch (Exception e) {
        e.printStackTrace();
    }
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            source = mMap.addMarker(new MarkerOptions()
                    .position(sc)
                    .title("MyHome")
                    .snippet("Bangalore")
                    .icon(BitmapDescriptorFactory.fromResource(bmp)));
        }
    });
}
});
thread.start();
无法从后台线程更新ui。使用
runOnUiThread

使用asycntask

让你的asycn taks成为你活动的内在类别。将位图声明为类变量

 class TheTask extends AsyncTask <Void,Void,Void>
 {
@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();

}
@Override
protected Void doInBackground(Void... params) {
    URL url ;
    try {
    url = new URL("myurl");
    bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    } catch (Exception e) {
      e.printStackTrace();
         }
    return null;
}
@Override
protected void onPostExecute(Void result) {

super.onPostExecute(result);
    source = mMap.addMarker(new MarkerOptions()
    .position(sc)
    .title("MyHome")
    .snippet("Bangalore")                                                                                     
    .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));                                       
    }
}
class任务扩展异步任务
{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
网址;
试一试{
url=新url(“myurl”);
bmp=BitmapFactory.decodeStream(url.openConnection().getInputStream());
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
source=mMap.addMarker(新的MarkerOptions()
.职位(资深大律师)
.名称(“我家”)
.片段(“班加罗尔”)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin));
}
}
我过去常加载图像。这是一个很好的图书馆

从url设置标记图标非常简单

try {
        Bitmap bmImg = Ion.with(context)
                .load("http://example.com").asBitmap().get();

        mMap.addMarker(new MarkerOptions().position(latlng)
                .icon(BitmapDescriptorFactory.fromBitmap(bmImg)));

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }

希望此帮助

发出http请求下载位图并使用相同的位图。您能提到完整的示例吗?我已经回答了以下问题:完整的解决方案以及代码片段@ppshein。您遇到了什么错误。您需要使用thread.url myurl=new url(“);bitmap bmp=BitmapFactory.decodeStream(myurl.openConnection().getInputStream());@ppshein从url获取位图。您得到的错误是什么。代码看起来不错。发布stacktraceFATAL异常:main 07-06 13:08:32.168:E/AndroidRuntime(15982):java.lang.RuntimeException:无法启动活动组件信息{…..LocationActivity}:android.os.NetworkOnMainThreadException导致的原因:android.os.NetworkOnMainThreadException 07-06位于android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118)使用异步任务发送请求。如何更改图像大小,或者如果用户添加了巨大的图像url,您测试过会发生什么?@mehmet您可以根据原始位图创建一个新的位图,如:bitmap resizedBitmap=bitmap.createScaledBitmap(bmImg,bmImg.getWidth()/2,bmImg.getHeight()/2,false);我已经用毕加索库解决了这个问题
try {
        Bitmap bmImg = Ion.with(context)
                .load("http://example.com").asBitmap().get();

        mMap.addMarker(new MarkerOptions().position(latlng)
                .icon(BitmapDescriptorFactory.fromBitmap(bmImg)));

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }