我是菜鸟,现在公司业务需要一个功能就是有个界面有很多详细地址,左划出现地图,并且那些地址在地图上显示,并标记。这个功能是怎么做的 啊,看了API好像只有云图里面有,如果不用云图就不能做出来吗?
一般的查询一次只能查询一个地址,而查询下一个地址上一个地址标记的就不见了,这个真心不会了。。。求大神啊
现在我在想的问题是,怎么查询一次标记后,第二次查询不会把第一次的remark清理掉,这个可以实现么。。。
我没有调用amap.clear 这个方法。。。
可以的啊 你肯定自己清除掉了 代码给我我晚上可以看
// 定位成功后回调函数
@Override
public void onLocationChanged(AMapLocation amapLocation ) {
if (mListener != null && amapLocation != null) {
if (amapLocation.getAMapException().getErrorCode() == 0) {
mListener.onLocationChanged(amapLocation);// 显示系统小蓝点
// /**
// * 获取高德地图的中的数据
// */
// //获取位置信息
geoLat = amapLocation.getLatitude();
geoLng = amapLocation.getLongitude();
city=amapLocation.getCity();
// Log.i("test", "纬度:"+geoLat+"---------- 经度:"+geoLng);
// Log.i("test", "定位速度:"+amapLocation.getSpeed());
// Log.i("test", "定位方向:"+amapLocation.getBearing());
// Log.i("test", "省 名 称:"+amapLocation.getProvince());
// Log.i("test", "城市名称:"+amapLocation.getCity());
// Log.i("test", "城市编码:"+amapLocation.getCityCode());
// Log.i("test", "区县名称:"+amapLocation.getDistrict());
// Log.i("test", "区域编码:"+amapLocation.getAdCode());
// Log.i("test", "街道和门牌信息:"+amapLocation.getStreet());
// Log.i("test", "详细地址:"+amapLocation.getAddress());
// //获取定位信息
// Bundle locBundle=amapLocation.getExtras();
// String desc="";
// if (locBundle != null) {
// desc = locBundle.getString("desc");
// }
// Log.i("test", desc);
List<String> list=(List<String>) getIntent().getSerializableExtra("map");
for(int i=0;i<list.size();i++){
pinterest(list.get(i));------------------------------这里循环调用查询
}
Toast.makeText(MainActivity.this, "当前城市名为:"+city, Toast.LENGTH_LONG).show();
}
}
}
};
private int currentPage;
private Query query;
// 周边环境搜索
private void pinterest(String keyWord) {
//Toast.makeText(MainActivity.this, "当前城市名为:"+city, Toast.LENGTH_LONG).show();
currentPage = 0;
// 第一个参数表示搜索字符串,
//第二个参数表示POI搜索类型
// 第三个参数表示POI搜索区域(空字符串代表全国)
query = new PoiSearch.Query(keyWord, "", city);
query.setPageSize(1);// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);// 设置查第一页
PoiSearch poiSearch = new PoiSearch(this, query);
//参数为经度,纬度,周围距离
poiSearch
.setBound(new SearchBound(new LatLonPoint(geoLat, geoLng), 5000));
poiSearch.setOnPoiSearchListener(poiSearchListener);--------------调用监听
poiSearch.searchPOIAsyn();
}
private PoiResult poiResult;
private OnPoiSearchListener poiSearchListener = new OnPoiSearchListener() {
@Override
public void onPoiSearched(PoiResult result, int rCode) {
if (rCode == 0) {
// 搜索POI的结果
if (result != null && result.getQuery() != null) {
// 是否是同一条
if (result.getQuery().equals(query)) {
poiResult = result;
// 取得搜索到的poiitems有多少页
int resultPages = poiResult.getPageCount();
// 取得第一页的poiitem数据,页数从数字0开始
List poiItems = poiResult.getPois();
// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
List suggestionCities = poiResult
.getSearchSuggestionCitys();
// dissmissProgressDialog();// 隐藏对话框
if (poiItems != null && poiItems.size() > 0) {
//aMap.clear();// 清理之前的图标----------------------------这个地方我注释掉的额。。。
PoiOverlay poiOverlay = new PoiOverlay(aMap,
poiItems);
//poiOverlay.removeFromMap();
poiOverlay.addToMap();
//poiOverlay.zoomToSpan();
}
}
}
}
}
昨天晚上回去的时候没有带回去,晚上我在高德地图上找API还是没有头绪。。。菜鸟好无语
额,我后来没怎么上csdn了,刚才看到这个问题,本来想删了的,不过看了浏览数不是很少,我把我以前解决的方法 贴出来把
public void addMarkersToMap(List markerList) {
try {
int j = markerList.size();
for (int i = 0; i < j; i++) {
AddCodeBean addCodeBean = markerList.get(i);
Drawable drawable = getResources().getDrawable(
R.drawable.icon_location);
Bitmap bitmap = MapContans.getMarkBitmap(drawable,
DensityUtils.dp2px(NoSignWaybillMap.this, 25),
DensityUtils.dp2px(NoSignWaybillMap.this, 35));//设置marker图标
double lat = addCodeBean.getLatitude();
double lng = addCodeBean.getLongitude();
LatLng latlng = new LatLng(lat, lng);
Marker waybillMarker = aMap.addMarker(new MarkerOptions()
.position(latlng)
.icon(BitmapDescriptorFactory.fromBitmap(bitmap))
.draggable(true));//添加
waybillMarker.setRotateAngle(0);// 设置marker旋转
waybillMarker.setTitle(FLAG);
waybillMarker.setSnippet(lng + "");
waybillMarker.setObject(latlng);
}
} catch (Exception e) {
Log.e("error", "添加marke错误:" + e);
}
}