Rya*_*yan 11 android listview android-mapview
目前我正在尝试在ListView中放置MapView.有人有这个成功吗?它甚至可能吗?这是我的代码:
ListView myList = (ListView) findViewById(android.R.id.list);
List<Map<String, Object>> groupData = new ArrayList<Map<String, Object>>();
Map<String, Object> curGroupMap = new HashMap<String, Object>();
groupData.add(curGroupMap);
curGroupMap.put("ICON", R.drawable.back_icon);
curGroupMap.put("NAME","Go Back");
curGroupMap.put("VALUE","By clicking here");
Iterator it = data.entrySet().iterator();
while (it.hasNext())
{
//Get the key name and value for it
Map.Entry pair = (Map.Entry)it.next();
String keyName = (String) pair.getKey();
String value = pair.getValue().toString();
if (value != null)
{
//Add the parents -- aka main categories
curGroupMap = new HashMap<String, Object>();
groupData.add(curGroupMap);
//Push the correct Icon
if (keyName.equalsIgnoreCase("Phone"))
curGroupMap.put("ICON", R.drawable.phone_icon);
else if (keyName.equalsIgnoreCase("Housing"))
curGroupMap.put("ICON", R.drawable.house_icon);
else if (keyName.equalsIgnoreCase("Website"))
curGroupMap.put("ICON", R.drawable.web_icon);
else if (keyName.equalsIgnoreCase("Area Snapshot"))
curGroupMap.put("ICON", R.drawable.camera_icon);
else if (keyName.equalsIgnoreCase("Overview"))
curGroupMap.put("ICON", R.drawable.overview_icon);
else if (keyName.equalsIgnoreCase("Location"))
curGroupMap.put("ICON", R.drawable.map_icon);
else
curGroupMap.put("ICON", R.drawable.icon);
//Pop on the Name and Value
curGroupMap.put("NAME", keyName);
curGroupMap.put("VALUE", value);
}
}
curGroupMap = new HashMap<String, Object>();
groupData.add(curGroupMap);
curGroupMap.put("ICON", R.drawable.back_icon);
curGroupMap.put("NAME","Go Back");
curGroupMap.put("VALUE","By clicking here");
//Set up adapter
mAdapter = new SimpleAdapter(
mContext,
groupData,
R.layout.exp_list_parent,
new String[] { "ICON", "NAME", "VALUE" },
new int[] { R.id.photoAlbumImg, R.id.rowText1, R.id.rowText2 }
);
myList.setAdapter(mAdapter); //Bind the adapter to the list
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!!
Sid*_*ele 56
为一个相当古老的答案(实际上超过2年)发布一个替代解决方案,但我认为这可能会帮助那些可能像我一样偶然发现这篇文章的人.
注意:这可能对那些只需要在"地图"中显示位置但不需要在其中与之交互的人有用ListView
.在单击某个项目后,实际地图可以显示在详细信息页面上ListView
正如@CaseyB已经指出的那样,MapView
是一种沉重的看法.为了对抗这个方面(并且让我的生活更轻松但更容易;-)),我选择像使用静态Google Map一样构建一个URL,使用我的应用程序所需的几个参数.您可以在此处获得更多选项:https://developers.google.com/maps/documentation/staticmaps/
首先,当我为我构建数据时ListView
,我将纬度和经度等数据传递给一个字符串,其中包含一些从上述链接中获取的静态变量.我从Facebook API获得了我的坐标.
我用来构建链接的代码:
String getMapURL = "http://maps.googleapis.com/maps/api/staticmap?zoom=18&size=560x240&markers=size:mid|color:red|"
+ JOLocation.getString("latitude")
+ ","
+ JOLocation.getString("longitude")
+ "&sensor=false";
Run Code Online (Sandbox Code Playgroud)
上述构造的URL在浏览器中使用时返回一个.PNG
文件.然后,在我adapter
的活动中,我使用@Fedor的Lazy Loading来显示从之前构建的URL生成的图像,以显示在自定义中ListView
.您当然可以选择自己的方法来显示它Map
(实际上是地图的图像).
最终结果的一个例子.
目前,我有大约30个奇怪的Checkin Maps(我将它与Facebook SDK一起使用)ListView
,但是用户可以拥有100个,并且绝对没有关于它减速的报告.
我怀疑,考虑到问题已经过去的时间,这可能无助于OP,但希望它能帮助其他用户在未来登陆此页面.
小智 6
首先,我不认为一次显示多个MapView会起作用.MapActivity文档每个进程只支持一个:
"每个进程只支持一个MapActivity.同时运行的多个MapActivities可能会以意外和不希望的方式干扰."
(http://code.google.com/android/add-ons/google-apis/reference/index.html)
它并没有明确表示你不能在MapActivity中拥有多个MapView,但我认为它们也会干涉,无论它们是什么类型的父ViewGroup.
其次,您可以考虑使用静态地图API来获取包含在ListView中的简单图像 - 完全成熟的MapView在任何情况下都可能是不必要的重量级:
http://code.google.com/apis/maps/documentation/staticmaps/
您可能面临的一个问题是静态地图API限制了"用户"的使用,这可能意味着通过IP(它不需要API密钥),并且移动网络可能会出现IP使用限制的问题.我不确定这究竟是怎么发挥出来的.
归档时间: |
|
查看次数: |
17064 次 |
最近记录: |