这需要一些帮助 .
我有一些商店的JSON和商店信息,比如他们的名字,ID和位置 . 我将其解析为ArrayList .
通过AsyncTask我将它们绘制在 Map 上 . 目前,这是4家商店 . 我覆盖了标记onClick以我想要的方式显示数据 . 我遇到的问题是,虽然标记位于基于经度和纬度的正确位置,但其他信息却不是 .
当我点击标记时,所有这些都列出了相同的商店名称 . 它只显示我的JSON中的最后一个商店 . 所有数据都来自我JSON中的最后一个商店 . 这是我的onPostExecute()代码:
@Override
protected void onPostExecute(ArrayList<ShopArray> shopArray) {
super.onPostExecute(shopArray);
for (ShopArray shopArrayOb : shopArray) {
double lat = shopArrayOb.geo_lat;
double lng = shopArrayOb.geo_lng;
final String barName = shopArrayOb.bar_name;
LatLng shopLocations = new LatLng(lat, lng);
MarkerOptions marker = new MarkerOptions()
.position(shopLocations)
gMap.addMarker(marker);
gMap.setOnMarkerClickListener(new OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
testText.setText(barName);
return false;
}
});
}
我真的不知道如何解决这个问题 . 我只是想让它显示标记的正确名称,以及其他数据 . 它不断显示我JSON中最后一个商店的数据 . 如果您需要查看更多我的代码,请告诉我,我会更新我的帖子 .
我非常感谢你的帮助,提前谢谢!
EDIT: 我've just tested with the default marker onClick. (.title and .snippet) and it worked! It'显示正确的信息!有没有办法获得自定义onClick呢?看起来像setOnMarkerListener导致了问题 .
2 回答
它's because you'多次在SAME
gMap
对象上调用setOnMarkerClickListener()
. 通过这种方式,将使用's not strange that the last call will take effect, and the last shop'的信息 . 您应该只设置OnMarkerClickListener
一次 . 当然,您必须在其onMarkerClick()
方法中识别您的标记,以确定点击了哪个商店 .您可以将所有标记放在HashMap中:
然后添加标记:
然后在你的听众中: