我開發了一個在相機視圖上顯示標記的增強現實應用程序。 標記是通過獲取數據庫中的位置動態創建的視圖。標記代表建築物,例如名稱和位置(緯度/經度)。Android:如何不重疊動態視圖? +視圖的動態位置
當應用程序啓動時,我得到手機的當前位置,並根據手機的位置和方向(SensorManager)在屏幕上顯示標記。
問題是,當標記處於相同方向時,它們是重疊的。我希望標記是一對一排列的。
我試過使用RelativeLayout,但它不會改變任何東西。
代碼標記創建:
@Override
public void onResume() {
super.onResume();
for(int j=0;j<markers.length;j++) {
//System.out.println(prefMarkers[j]);
if(markers[j] == null) {
RelativeLayout.LayoutParams rParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
markers = new DataList(); // My list of markers
for(int i=0; i<markers.size();i++) {
markers[i].setOnClickListener(clickListener);
//addContentView(markers[j].get(i), params);
relative.addView(markers[j].get(i), rParams);
}
}
}}}
代碼時的位置變化(標記移動):
public final static void moveSpot(Context c, View tv, GeoPoint p,
float azimut, Location me, int screenWidth, float roll,
int screenHeight, float pitch) {
int angle = // Calculation for the position of the markers
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
lp.leftMargin = -angle * screenWidth/90;
lp.addRule(RelativeLayout.ABOVE);
tv.setLayoutParams(lp);
}
public SensorEventListener createListener() {
return new SensorEventListener() {
public void onAccuracyChanged(Sensor _sensor, int _accuracy) {
}
public void onSensorChanged(SensorEvent evt) {
if (evt.sensor.getType() == Sensor.TYPE_ORIENTATION && markers != null) {
for(int j=0;j<markers.length;j++)
moveSpot(context, markers[i], markers[i]
.getGeoPoint(), azimut, myLoc,
mScreenWidth, roll, mScreenHeight, pitch);
}
};
}
我想我不走正道,所以我該怎麼做才能防止標記重疊? 如果您需要精確度,請問我會盡可能精確。
很遺憾我的英語不好:/
編輯:感謝Martin還原的反應,我解決我的問題的一部分。現在我沒有重疊的問題,而是位置的問題。
這裏我的應用程序的截圖現在:
這張圖片上,我們可以看到有沒有反正重疊的問題。 ,我想這樣做是在這部翻拍的截圖:
我希望我清楚這個時間:X
謝謝,我做到了,結果要好得多,但我想,只有重疊視圖會相互顯示,因爲某些標記會通過屏幕:/ 但是,這是一個很好的進展,現在標記不會重疊:) – Pidikan 2012-08-03 10:14:31
很高興它有幫助,請接受並檢查響應是否有效,以便其他人可以重複使用它在未來。謝謝! – 2012-08-03 10:16:56
對不起,我編輯了我的答案,它有幫助但沒有解決問題:/ – Pidikan 2012-08-03 10:20:14