我正在研究Android上的地圖應用程序,並且我正在使用Google Maps Android API V2。我從Web服務獲取多邊形數據,通過XML解析將其轉換,並可以在地圖上顯示它,而不會出現問題。但是當用戶觸及任何多邊形時,沒有任何方法可以像彈出一樣打開?或者,如果用戶想要改變選定多邊形的座標。我看到很多例子,但是它們都是用javascript或者一些使用不同的第三方完成的。有人有任何建議嗎?提前致謝。Android Google Map Polygon click event
3
A
回答
0
所有你有是onMapClickListener返回新聞界的經緯度工作
公共抽象無效onMapClick(經緯度點)
當用戶在地圖上的點按手勢調用,但只有當沒有任何地圖的疊加處理該手勢。此方法的實現總是在主線程上調用。 參數 point點擊地面上的點(從屏幕點投影)。
然後檢查latlng是否在多邊形內。
How to determine if a point is inside a 2D convex polygon?
我有點拼湊了一起,但好消息是緯度和經度已增加一倍。 祝你好運
1
我有同樣的問題。當用戶點擊一個多邊形時,onMapClickListener不會被調用,只有當其他覆蓋(如多邊形)不處理該點擊事件時纔會調用onMapClickListener。如您所見,Polygon會處理它 - GM將多邊形移動到屏幕中心。事件不會傳遞給onMapClickListener,就是這樣。 要解決這個問題,我在GM處理它們之前攔截點擊事件,在視圖中環繞MapFragment,如here所述,項目從屏幕座標點擊點到地圖,然後檢查它是否位於地圖上的多邊形內here(其他答案講述它太)
相關代碼:
public class MySupportMapFragment extends SupportMapFragment {
private View mOriginalContentView;
private TouchableWrapper mTouchView;
private BasicMapActivity mActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mActivity = (BasicMapActivity) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent,
Bundle savedInstanceState) {
mOriginalContentView = super.onCreateView(inflater, parent,
savedInstanceState);
mTouchView = new TouchableWrapper();
mTouchView.addView(mOriginalContentView);
return mTouchView;
}
@Override
public View getView() {
return mOriginalContentView;
}
class TouchableWrapper extends FrameLayout {
public TouchableWrapper() {
super(mActivity);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP: {
int x = (int) event.getX();
int y = (int) event.getY();
mActivity.tapEvent(x,y);
break;
}
}
return super.dispatchTouchEvent(event);
}
}
}
BasicMapActivity:
public void tapEvent(int x, int y) {
Log.d(TAG,String.format("tap event x=%d y=%d",x,y));
if(!isEditMode()) {
Projection pp = mMap.getProjection();
LatLng point = pp.fromScreenLocation(new Point(x, y));
for (Shape ss : mPolygons) {
if(ss.isPointInPolygon(point)) {
ss.mMarkers.get(0).marker.showInfoWindow();
}
}
}
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map);
}
佈局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="au.com.datalink.plugins.MySupportMapFragment" />
</RelativeLayout>
相關問題
- 1. 在Android中擴展Google Map Polygon
- 2. Google map API Multiple marker click animation
- 3. Click Event Event For Cross Page PostBack
- 4. ExtJS TabItem Click Event
- 5. Shift + Click Event Woes
- 6. WebBrowser Click-Event
- 7. WPF TextBlock Click Event
- 8. Click event keep firing
- 9. Click event oop
- 10. Click event open Popup
- 11. Jquery click event
- 12. wijcompositechart click event
- 13. Highcharts Image click event
- 14. React Icon Click event
- 15. Monotouch OwnerDrawnElement Click Event
- 16. Bootstrap Typeahead click event
- 17. linkbutton click event
- 18. Searchbutton click event
- 19. Qt QLabel click event
- 20. jquery:live(click)ajax with one(click)event
- 21. click event disable other click events
- 22. Click Event Works Only Only Last Marker
- 23. jQuery Click Event Issue - Framework7
- 24. javascript fire C#Click event
- 25. ng-click event not working
- 26. Checkbox click event not firing
- 27. JQuery Click Event not Recognized
- 28. Datepicker click event not firing
- 29. Button Click Event Not Firing
- 30. react-click event has event.target
但是不僅有一個多邊形,還有更多。那麼我應該檢查所有多邊形的這個點嗎? – Rnklnc
以及用這種方法,你只能檢查點是否在多邊形內,對不對?你不能獲得有關多邊形的座標或任何信息? – Rnklnc