Android에서지도 애플리케이션을 작업 중이며 Google Maps Android API V2를 사용 중입니다. 웹 서비스에서 폴리곤 데이터를 가져 와서 XML 파싱으로 변환하고 문제없이지도에 표시 할 수 있습니다. 그러나 사용자가 폴리곤을 터치 할 때 팝업처럼 열 수있는 방법이 없습니까? 또는 사용자가 선택한 다각형의 좌표를 변경하려고하는 경우 일 수 있습니다. 나는 많은 예를 보았지만 자바 스크립트로 끝나거나 다른 제 3자를 사용한다. 누군가에게 조언이 있습니까? 미리 감사드립니다.Android Google지도 다각형 클릭 이벤트
3
A
답변
0
당신이 언론의 위도와 경도를 반환 리스너 (OnMapClickListener)입니다 작업을해야하는 것은
공공 추상적 무효 onMapClick (LatLng를 포인트) 사용자가지도에 탭 제스처를 보낼 때
는하지만 경우에만, 호출 지도의 오버레이 중 아무 것도 제스처를 처리하지 못했습니다. 이 메소드의 구현은 항상 주 스레드에서 호출됩니다. 매개 변수 점 두드린 (화면 지점에서 투영 된)지면상의 지점.
그런 다음 latlng이 다각형 안에 있는지 확인하십시오.
How to determine if a point is inside a 2D convex polygon?
내가 좀 함께이 재현하지만 좋은 소식은 위도이며, LNG 이미 두 배입니다. 행운을 빌어 요
1
나는 동일한 문제가있었습니다. 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);
}
레이아웃 :
,536,913 대답은) 너무 그것에 대해관련 코드를 알려줍니다
<?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>
하지만 하나의 다각형이있을뿐만 아니라 더 많은 것이 있습니다. 그래서 모든 폴리곤에 대해 그 점을 확인해야합니까? – Rnklnc
또한이 방법을 사용하면 점이 다각형 안에 있는지 확인할 수 있습니다. 맞습니까? 다각형에 대한 좌표 또는 정보를 얻을 수 없습니까? – Rnklnc