- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发新的 Google Map v2 API。
我已经使用 ImageLoader 在 Marker 上动态显示图像。
但问题是,当我获得 Universal Image Loader 的 onLoadingComplete() 时,ImageView 不会自动或手动失效。
下次如果我点击同一个标记,图像将从 Universal Image Loader 的缓存中显示。
下面是我的 CustomInfoWindowAdapter 代码:
private class CustomInfoWindowAdapter implements InfoWindowAdapter {
@Override
public View getInfoContents(Marker marker) {
return null;
}
@Override
public View getInfoWindow(Marker marker) {
final View mWindow = getLayoutInflater().inflate(R.layout.custom_info_window, null);
render(marker, mWindow);
return mWindow;
}
private void render(final Marker marker, View view) {
final String url = markers.get(marker.getId()).getStrProfilePic();
final ImageView image = ((ImageView) view.findViewById(R.id.badge));
Log.e(TAG, "URL : " + url);
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);
((ImageView) view).invalidate();
}
});
} else {
image.setImageResource(R.drawable.noimage);
}
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
final String snippet = marker.getSnippet();
final TextView snippetUi = ((TextView) view.findViewById(R.id.snippet));
if (snippet != null) {
snippetUi.setText(snippet);
} else {
snippetUi.setText("");
}
}
}
我在添加 Marker 时将 Marker ID 存储在 HashTable 中。从他们那里我会得到照片的 URL。
最佳答案
我在类级别获取了一个标记对象并使用该对象更新标记信息。
我已按如下方式自定义我的类以更新 ImageView:
private class CustomInfoWindowAdapter implements InfoWindowAdapter {
private View view;
public CustomInfoWindowAdapter() {
view = getLayoutInflater().inflate(R.layout.custom_info_window, null);
}
@Override
public View getInfoContents(Marker marker) {
if ( YourClassName.this.marker != null &&
ClassName.this.marker.isInfoWindowShown() ) {
YourClassName.this.marker.hideInfoWindow();
YourClassName.this.marker.showInfoWindow();
}
return null;
}
@Override
public View getInfoWindow(final Marker marker) {
YourClassName.this.marker = marker;
final String url = markers.get(marker.getId()).getStrProfilePic();
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.noimage);
}
final String title = marker.getTitle();
final TextView titleUi = ((TextView) view.findViewById(R.id.title));
if (title != null) {
titleUi.setText(title);
} else {
titleUi.setText("");
}
final String snippet = marker.getSnippet();
final TextView snippetUi = ((TextView) view.findViewById(R.id.snippet));
if (snippet != null) {
snippetUi.setText(snippet);
} else {
snippetUi.setText("");
}
return view;
}
}
关于Android GoogleMap 2 通过通用图像加载器使用 ImageView 在 InfoWindow 中动态更新信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144341/
我已经使用 jquery 删除了 google map 的 infoWindow 的关闭按钮,但是无法获取 infoWindow 宽度来进行计算以使文本位于 InfoWindow 的中心。 移除关闭按
我很确定这在很长一段时间内都不是 Google Maps API 的默认行为,但与此同时它肯定已经改变了。 我修改了google提供的Fiddle:https://developers.google.
我遇到了一个奇怪的问题。 infowindow.js 中显示 f = undefined。但我什至没有文件 infowindow.js...当我单击它时就会发生这种情况。它必须显示信息窗口,但它没有。
我在向标记添加信息窗口时遇到了问题。虽然它们看起来都很好,如果我点击它们,窗口就会出现,我似乎遇到了一个错误,我不知道它想要什么。 问题在于,当我单击标记时,会出现包含所有信息的窗口。我收到一个:“U
我在下面的代码中找不到错误,但它显示所有信息窗口的相同内容。 $('#map').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', fun
我想将鼠标悬停在标记上时的信息窗口聚焦。只要他停留在信息窗口上,窗口就会打开。下面是我的代码 content=""+j+"."+obj.identifier+"'>"+obj.company.subs
我正在使用 GMaps在我的网站上显示 map 。使用信息窗口创建 map 非常容易。但是,信息窗口仅在单击标记时出现。 我的Javascript: var map; $(document).read
我运行以下代码以在与我的 GeoLocation 标记分开的数组中显示 map 上的标记。创建一个简单的外部链接很容易,但我如何在数组标记中创建相同的外部链接,以及这在 IE 中不起作用的任何原因?
通常我的 map 上有很多标记(比如代表商店)。我有显示标记所代表的商店基本信息的信息窗口,然后,我想在信息窗口 HTML 上放置一个按钮,例如,显示“详细信息”。信息窗口的 html 很简单。信息窗
我正在使用这个非常基本的代码来使 InfoWindow 成为“单例”并在需要时打开它。 (在 iOS5 上的 UIWebView 中) google.maps.event.addListener(ma
目前,当用户单击我们 map 屏幕上的位置标记时,将调用页面方法以从服务器检索附加信息。当 page 方法成功时,结果用于定义显示在 map 上的 infoWindow 的内容。在 page 方法很慢
我实现了一个选项来找到离实际位置最近的标记。我在带有自定义信息窗口的 ClusterItem 中拥有所有标记。在没有聚类的普通谷歌地图上,我可以只使用 marker.showInfoWindow();
我有以下代码,但每次我尝试添加一个按钮时它都不起作用。 有人可以告诉我如何添加一个在点击时显示警告框的按钮吗? var infowindow = new google.maps.InfoWindow(
我正在尝试向路线添加信息窗口。有很多示例可以在标记上的事件监听器上添加 InfoWindow。 但是我怎样才能移动信息窗口以显示在从一个标记到另一个标记的实际计划路线上。之前已经有人试过问这个问题,但
我在click 上设置了一个监听器,以获取我未创建 GoogleMaps (V3 API) 的标记。单击它时,我首先使用一些简单的纯 HTML 和“正在加载”gif 加载信息窗口。 然后我调用一个方法
我正在使用谷歌地图 API 来绘制事件列表。事件有事件举办地点的坐标。大多数场馆都会举办不止一场事件。如何在一个信息窗口中显示具有相同坐标的所有事件。 var locations = [ ['ev
我有一张 map ,我一直试图找出将信息窗口添加到数组中的标记,但我被卡住了。使用单个 map 和单个标记,我可以毫无问题地添加信息窗口。但在我的一生中,我无法让信息窗口在我的数组中工作。如果有人能帮
我从 mysql 数据库获取坐标,如下所示 (, ) (, ) 当我绘制 map 时,它会显示两个点和方向,如下面的代码所示 function initialize() { var m
如何循环关联数组的值?现在我一次只能参加一个协会!在这里,我将 MySQL 表中的所有值传递给 json_encode,仅将纬度和经度作为数组的数组以及其他字符串。谢谢 function myMap(
所以我一直在使用 google-maps-react现在几个月了,一切正常,现在只有一点我不明白。这可能就是我无法实现这一目标的原因。 这是我的 的结构: {this.state
我是一名优秀的程序员,十分优秀!