Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Android 从服务器获取图像并使用截击显示为标记图标_Android_Google Maps_Bitmap_Android Volley_Marker - Fatal编程技术网

Android 从服务器获取图像并使用截击显示为标记图标

Android 从服务器获取图像并使用截击显示为标记图标,android,google-maps,bitmap,android-volley,marker,Android,Google Maps,Bitmap,Android Volley,Marker,我正在使用volley库从服务器获取标记图标URL String icon_url = catObj.getString("icon_url"); 然后将图标url分配给MyMarker类中声明的变量 this.mIconUrl = icon_url; 现在,在setUpMap方法中,我遇到了如何用从服务器获取的图像替换标记图标的问题。以下是此操作的代码: for(MyMarker myMarker : markers) { Marker marker = mMap.add

我正在使用volley库从服务器获取标记图标URL

String icon_url = catObj.getString("icon_url");
然后将图标url分配给MyMarker类中声明的变量

 this.mIconUrl = icon_url; 
现在,在setUpMap方法中,我遇到了如何用从服务器获取的图像替换标记图标的问题。以下是此操作的代码:

 for(MyMarker myMarker : markers)
 {
     Marker marker = mMap.addMarker(new MarkerOptions()
     .position(myMarker.getmLatLng())
     .title(myMarker.getmLabel())
     .snippet(myMarker.getmIcon())
     .icon( ??? ));  //myMarker.getmIconUrl won't work as it return String
 }
我也尝试过使用此链接,但它在ImageView中显示了图像:


非常感谢您的帮助。

我使用BitmapFactory渲染自定义图案。您可以使用类似的方法从URL加载位图:

或者,这只是将HttpUrlConnection替换为Volley:


当您得到位图时,可以使用
.icon(BitmapDescriptorFactory.fromBitmap(bmp))

要使用Volley获取图像,您必须首先创建
MarkerOptions
的实例,然后使用Volley ImageLoader从服务器获取图像,然后在获取图像位图后将图像设置为marker。您可能会有以下情况:

ImageLoader imageloader =VolleySingleton.getInstance(getApplicationContext()).getImageLoader();

 for(MyMarker myMarker : markers)
  {
    final MarkerOptions markerOptions = new MarkerOptions()
          .position(myMarker.getmLatLng());

    imageloader.get(myMarker.getmIconUrl(), new ImageLoader.ImageListener() {
         @Override
         public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) 
         {
           Bitmap bitmap = response.getBitmap();
           if (bitmap != null) {
              markerOptions.icon(BitmapDescriptorFactory.fromBitmap(bitmap));
               //add marker to your map using below codes 
              // mapMarkers is a HashMap of your markers and your possible values for that location(eg. id,name,..)
              Marker marker = mMap.addMarker(markerOptions);
              mapMarkers.put(marker, myMarker.getLocationId());
           }
         }
         @Override
         public void onErrorResponse(VolleyError error) {
         }
     });
  }