本来已经实现点击一个按钮,然后根据屏幕中心坐标显示周围兴趣点的功能。
现在想实现进入app之后直接显示兴趣点的功能(粗略一想,很简单嘛,就触发类似一个click事件嘛),思路: 进入地图,1.等待地图加载完成(在地图加载好的回调函数中写接下去的代码)----2.获取屏幕经纬度----3.兴趣点搜索
后来发现还是会在
GeoPoint pPoint=mMapView.getProjection().fromPixels(0,0);
float la=(float) (pPoint.getLatitudeE6()/1000000.0);
float lo=(float) (pPoint.getLongitudeE6()/1000000.0);
中报空指针错误。后来在百度开发者论坛中提问发现,获取屏幕坐标函数
需要opengl绘制完成才行。
后来想了种方法就是:在地图加载完成后,延迟两秒钟加载取屏幕坐标函数。
@Override
public void onMapLoadFinish() {
//TODO:
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
showLoggingIntheScreen();
}}, 2000);
}
有兴趣的话可以看下 showLoggingIntheScreen()
private void showLoggingIntheScreen() {
//取得屏幕中心点的屏幕坐标偏移.
Point p=mMapView.getCenterPixel();
//取得屏幕中心点的坐标
GeoPoint pPoint=mMapView.getProjection().fromPixels(p.x,p.y);
float la=(float) (pPoint.getLatitudeE6()/1000000.0);
float lo=(float) (pPoint.getLongitudeE6()/1000000.0);
System.out.println("可能中心点:"+la+"long:"+lo);
String pixsCenterPoint=""+lo+","+la;
//附近搜索menu
//清除pop 居然解决了 点击图片,不弹出的问题
if(popImageview!=null)
popImageview.hidePop();
if(pop!=null)
pop.hidePop();
//清理地图
mMapView.getOverlays().clear();
//清除图片, 图片在 mMapView.getOverlays().clear();中居然不能清除
mMapView.removeView(imageView_popPhoto);
mMapView.refresh();
//画自己所在的位置
mylocationOverlay=new MyLocationOverlay(mMapView);
mylocationOverlay.enableCompass();
mMapView.getOverlays().add(mylocationOverlay);
NearbySearchInfo info = new NearbySearchInfo();
info.ak = "4674a004717700fd5be7173f20142683";
//info.geoTableId =47633 ;
info.geoTableId =47911 ;
//当前坐标位置
/*String NowLocation=""+locData.longitude+","+locData.latitude;*/
//屏幕中心坐标位置
info.location=pixsCenterPoint;
/**
* 这里可以填写关键字,进行搜多,暂时觉得这个搜索没用 info.q
* */
//info.location = "120.110141,30.269475";
info.radius = searchWidth;
info.pageSize=50;
CloudManager.getInstance().nearbySearch(info);
}