本來已經實現點擊一個按鈕,然後根據屏幕中心坐標顯示周圍興趣點的功能。
現在想實現進入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); }