Android 为什么谷歌地图v2的自定义信息窗口不加载url图像?
我正在开发应用程序使用谷歌地图v2,在应用程序中,有自定义信息窗口,这是不是从URL加载图像(加载图像加载器)请参阅附加的图像更多的清除。 我的密码在这里-Android 为什么谷歌地图v2的自定义信息窗口不加载url图像?,android,map,Android,Map,我正在开发应用程序使用谷歌地图v2,在应用程序中,有自定义信息窗口,这是不是从URL加载图像(加载图像加载器)请参阅附加的图像更多的清除。 我的密码在这里- public class CustomWindowAdapter implements InfoWindowAdapter { private Activity objactivity; private List<GroupDealModle> mapList; public CustomWindowAdapter(Activ
public class CustomWindowAdapter implements InfoWindowAdapter {
private Activity objactivity;
private List<GroupDealModle> mapList;
public CustomWindowAdapter(Activity objactivity,
List<GroupDealModle> mapList) {
this.objactivity = objactivity;
this.mapList = mapList;
}
@Override
public View getInfoContents(Marker objmarker) {
return null;
}
@Override
public View getInfoWindow(Marker objmarker) {
View objview = render(objmarker);
return objview;
}
private View render(Marker objmarker) {
ImageLoader objloader = new ImageLoader(objactivity);
View view = null;
if (!objmarker.getTitle().equals("")) {
int pos = Integer.parseInt(objmarker.getTitle());
Log.e("==check position==", "" + pos);
if (mapList != null && mapList.size() > pos) {
String countvalue = mapList.get(pos).getCount();
Log.e("==check count==", "" + countvalue);
if (countvalue.equalsIgnoreCase("1")) {
LayoutInflater inflater = (LayoutInflater) objactivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.balloon_overlay, null, false);
TextView objbusname = (TextView) view
.findViewById(R.id.balloon_item_title);
TextView objballoon_item_desc = (TextView) view
.findViewById(R.id.balloon_item_desc);
TextView objtitle = (TextView) view
.findViewById(R.id.balloon_item_snippet);
ImageView objimgview = (ImageView) view
.findViewById(R.id.userthumb_inbaloon);
TextView objtextexpired = (TextView) view
.findViewById(R.id.textexpired);
objbusname.setText(mapList.get(pos).getBussiness_name());
String expirevalue = mapList.get(pos).getExpire_status();
if (expirevalue != null && expirevalue.equals("1")) {
objtextexpired.setVisibility(View.VISIBLE);
}
if (expirevalue != null && expirevalue.equals("0")) {
objtextexpired.setVisibility(View.GONE);
}
objtitle.setText(mapList.get(pos).getDeal_title());
objballoon_item_desc.setText(mapList.get(pos)
.getDescription());
String imageurl = mapList.get(pos).getImage();
objloader.DisplayBanner(AppConstants.BASE_URL + imageurl,
objimgview, 65, 65);
} else {
LayoutInflater inflater = (LayoutInflater) objactivity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.transparentview, null, false);
view.setVisibility(View.GONE);
String userid = mapList.get(pos).getUser_id();
LatLng objlatlng = objmarker.getPosition();
double latitude = objlatlng.latitude;
double longitude = objlatlng.longitude;
Bundle objbundle = new Bundle();
Intent objintent = new Intent(objactivity,
com.flashdeal.map.MapGroupData.class);
objbundle.putString("from", "map");
objbundle.putString("lat", "" + latitude);
objbundle.putString("longi", "" + longitude);
objbundle.putString("userid", "" + userid);
objintent.putExtras(objbundle);
objactivity.startActivity(objintent);
}
}
}
return view;
}
公共类CustomWindowAdapter实现InfoWindowAdapter{
私人活动客观性;
私有列表映射列表;
公共CustomWindowAdapter(活动对象,
列表(地图列表){
this.objactivity=objactivity;
this.mapList=mapList;
}
@凌驾
公共视图getInfoContents(标记objmarker){
返回null;
}
@凌驾
公共视图getInfoWindow(标记objmarker){
视图objview=render(objmarker);
返回objview;
}
私有视图渲染(标记objmarker){
ImageLoader objloader=新的ImageLoader(对象活性);
视图=空;
如果(!objmarker.getTitle().equals(“”){
int pos=Integer.parseInt(objmarker.getTitle());
Log.e(“==检查位置==”,“+pos”);
if(mapList!=null&&mapList.size()>pos){
字符串countvalue=mapList.get(pos.getCount();
Log.e(“==检查计数==”,“+countvalue”);
if(countvalue.equalsIgnoreCase(“1”)){
LayoutInflater充气机=(LayoutInflater)对象性
.getSystemService(上下文布局\充气机\服务);
视图=充气机。充气(R.layout.balloon\u覆盖,空,假);
TextView objbusname=(TextView)视图
.findViewById(R.id.balloon\u项目\u标题);
TextView objballoon\u item\u desc=(TextView)视图
.findViewById(R.id.balloon\u item\u desc);
TextView对象标题=(TextView)视图
.findViewById(R.id.balloon\u item\u片段);
ImageView对象视图=(ImageView)视图
.findviewbyd(R.id.userthumb\u inbalon);
TextView objtextexpired=(TextView)视图
.findViewById(R.id.textexpired);
objbusname.setText(mapList.get(pos.getBussiness_name());
字符串expirevalue=mapList.get(pos.getExpire_status();
if(expirevalue!=null&&expirevalue.equals(“1”)){
objtextexpired.setVisibility(View.VISIBLE);
}
if(expirevalue!=null&&expirevalue.equals(“0”)){
objtextexpired.setVisibility(View.GONE);
}
setText(mapList.get(pos.getDeal_title());
objballoon_item_desc.setText(mapList.get(pos)
.getDescription());
字符串imageurl=mapList.get(pos.getImage();
objloader.DisplayBanner(AppConstants.BASE_URL+imageurl,
objimgview,65,65);
}否则{
LayoutInflater充气机=(LayoutInflater)对象性
.getSystemService(上下文布局\充气机\服务);
视图=充气机。充气(R.layout.transparentview,null,false);
view.setVisibility(view.GONE);
字符串userid=mapList.get(pos.getUser_id();
LatLng objlatng=objmarker.getPosition();
双纬度=对象纬度;
双经度=objlatng.longitude;
Bundle objbundle=新Bundle();
意向对象=新意向(对象性,
com.flashdeal.map.MapGroupData.class);
putString(“from”,“map”);
objbundle.putString(“纬度”,“纬度+纬度”);
putString(“longi”,即“+”经度);
putString(“userid”,即“+userid”);
外放对象(objbundle);
客体性。星形触觉(客体);
}
}
}
返回视图;
}
}
此适配器在从服务器下载数据后调用,如下所示-
@Override
protected void onPostExecute(List<GroupDealModle> result) {
if (objprogress.isShowing()) {
objprogress.dismiss();
}
if (result != null) {
mapList = result;
myMap.setInfoWindowAdapter(new CustomWindowAdapter(MainActivity.this,mapList));
if (result.size() != 0) {
if (result != null) {
addPins(result);
}
} else if (frommovecurrent != null
&& frommovecurrent.equalsIgnoreCase("yes")) {
frommovecurrent = "no";
addSingleMarker();
addPins(result);
/*
* // objLayout . removeAllViews (); // objLayout .addView(
* objviewformap ); objMapViewhelper . clearMap( );
* AlertDialog .Builder objbuilder = new AlertDialog
* .Builder( MainActivity .this); objbuilder . setMessage (
* "No deals found" ); objbuilder . setPositiveButton ("ok",
* new DialogInterface . OnClickListener () {
*
* @Override public void onClick( DialogInterface arg0, int
* arg1) { } }); objbuilder . create(); objbuilder .show();
*/
} else if (result.size() == 0) {
addSingleMarker();
addPins(result);
}
}
}
@覆盖
受保护的void onPostExecute(列表结果){
if(objprogress.isShowing()){
objprogress.disclose();
}
如果(结果!=null){
地图列表=结果;
setInfoWindowAdapter(新的CustomWindowAdapter(MainActivity.this,mapList));
如果(result.size()!=0){
如果(结果!=null){
addPins(结果);
}
}else if(frommovecurrent!=null
&&frommovecurrent.equalsIgnoreCase(“是”)){
frommovecurrent=“否”;
addSingleMarker();
addPins(结果);
/*
*//objLayout.removeAllViews();//objLayout.addView(
*objviewformap);objMapViewhelper.clearMap();
*AlertDialog.Builder objbuilder=新建AlertDialog
*.Builder(MainActivity.this);objbuilder.setMessage(
*“未找到交易”);objbuilder.setPositiveButton(“确定”,
*新建DialogInterface.OnClickListener(){
*
*@Override public void onClick(对话框接口arg0,int
*arg1){};objbuilder.create();objbuilder.show();
*/
}else if(result.size()==0){
addSingleMarker();
addPins(结果);
}
}
}
我已经看到了这个讨论
但无法解决我的问题,请任何人指导我。地图V2 UI实际上是由另一个进程呈现的。将
视图
传递到地图V2后,您无法修改用于信息窗口的视图。我猜您正在尝试设置视图
,然后稍后加载图像,但这不会起作用。首先获取图像,然后将其放入视图
,然后再将视图
交给Maps V2
这个,哦
static HashMap<String,String> loadImagesFlag = new HashMap<String, String>();
*/*create a AsyncTask for load image asynchronously */*
public class FetchImageTask extends AsyncTask<String, Integer, Bitmap>
{
@Override
protected Bitmap doInBackground(String... arg0) {
Bitmap b = null;
try {
Thread.sleep(500);
b = BitmapFactory.decodeStream((InputStream) new URL(arg0[0]).getContent());
} catch (MalformedURLException e) {
//e.printStackTrace();
} catch (IOException e) {
//e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
return b;
}
}
public View getInfoWindow(final Marker marker){
View view = getLayoutInflater().inflate(R.layout.custome_infowindow, null);
ImageView driverImage = (ImageView) view.findViewById(R.id.img_driverphoto);
/* Check this image is already load or not */
if (DriverImageDTO.isLoadImage(driverName)) {
/*set Image which is already loaded */
driverImage.setImageBitmap(DriverImageDTO.DImage);
}
else if (!loadImagesFlag.containsKey(driverName)){
final String vName = driverName;
/* create HashMap to check status of Image is Load or not */
loadImagesFlag.put(driverName,"true");
new com.intelisky.FetchImageTask() {
protected void onPostExecute(Bitmap result) {
if (result != null) {
try {
if(DriverImageDTO.driverimagelist==null){
DriverImageDTO.driverimagelist = new ArrayList<DriverImageDTO>();
}
DriverImageDTO.driverimagelist.add(new DriverImageDTO(driverName, result));
marker.setVisible(true);
marker.hideInfoWindow();
getInfoWindow(marker);
marker.showInfoWindow();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}.execute(imageurl));
}
return view
}
private class CustomInfoWindowAdapter implements InfoWindowAdapter {
private View view;
public CustomInfoWindowAdapter() {
view = getActivity().getLayoutInflater().inflate(
R.layout.group_custom_infowindow, null);
}
@Override
public View getInfoContents(Marker marker) {
if (mymarker != null
&& mymarker
.isInfoWindowShown()) {
mymarker.showInfoWindow();
}
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
mymarker = marker;
String url = get url of image
final ImageView image = ((ImageView) view.findViewById(R.id.badge));
if (url != null && !url.equalsIgnoreCase("null")
&& !url.equalsIgnoreCase("")) {
imageLoader.displayImage(url, image, options,
new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri,
View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view,
loadedImage);
getInfoContents(marker);
}
});
} else {
image.setImageResource(R.drawable.ic_stub);
}
return view;
}
}