Android 从服务器获取图像并使用截击显示为标记图标
我正在使用volley库从服务器获取标记图标URLAndroid 从服务器获取图像并使用截击显示为标记图标,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
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) {
}
});
}