2012-12-16 2 views
1

마치 마커처럼 정보 윈도우 (열린, 닫기, 내용 설정)를 관리하는 방법을 찾고 있습니다.
아마도 들으실 수 있습니다. onClick 이벤트를 만들고 거기에 숨겨진 마커를 추가하고 해당 마커에 대한 InfoWindow를 엽니 다. InfoWindow 콘텐츠를 검색 할 수있는 다각형을 찾는 데 문제가 있습니다.
더 멋진 해결책이 있습니까?Android에서 Google Maps API v2를 사용하여 InfoWindows를 관리하는 방법

답변

0

저는 여러분의 문제와 비슷한 해결책을 찾기 위해 노력해 왔습니다.

당신이 말했듯이

는 큰 문제는 LatLng를OnMapLongClickListener() 다각형 내부에서 가져온 좌표 경우 얻는 방법이다.

Point-in-polygon algorithm.이라는이 작업을 수행하는 데 사용할 수있는 일반적인 알고리즘이 있습니다. 이것은이 알고리즘의 Java에 대한 적응입니다.

private boolean containsInPolygon(LatLng latLng, Polygon polygon) { 

    boolean oddTransitions = false; 
    List<VerticesPolygon> verticesPolygon = polygon.getVertices(); 
    float[] polyY, polyX; 
    float x = (float) (latLng.latitude); 
    float y = (float) (latLng.longitude); 

    // Create arrays for vertices coordinates 
    polyY = new float[verticesPolygon.size()]; 
    polyX = new float[verticesPolygon.size()]; 
    for (int i=0; i<verticesPolygon.size() ; i++) { 
     VerticesPolygon verticePolygon = verticesPolygon.get(i); 
     polyY[i] = (float) (verticePolygon.getVertice().getLongitude()); 
     polyX[i] = (float) (verticePolygon.getVertice().getLatitude()); 
    } 
    // Check if a virtual infinite line cross each arc of the polygon 
    for (int i = 0, j = verticesPolygon.size() - 1; i < verticesPolygon.size(); j = i++) { 
     if ((polyY[i] < y && polyY[j] >= y) 
       || (polyY[j] < y && polyY[i] >= y) 
       && (polyX[i] <= x || polyX[j] <= x)) { 
      if (polyX[i] + (y - polyY[i])/(polyY[j] - polyY[i]) 
        * (polyX[j] - polyX[i]) < x) { 
       // The line cross this arc 
       oddTransitions = !oddTransitions; 
      } 
     } 
    } 
    // Return odd-even number of intersecs 
    return oddTransitions; 
} 

마지막으로, 당신이 보여주고 싶은 것을 관리하기위한 CustomInfoWindowsAdapter을 만들 수 있습니다.

+0

동일한 솔루션을 사용했습니다. 어쨌든 고마워! – GetUsername

+0

어떤 패키지에는 Polygon 및 VerticesPolygon 클래스가 구현되어 있습니까? –

+0

안녕 골란. 둘 다 사용자 정의 클래스입니다. 다각형에는 VerticesPolygon 인스턴스가 있습니다. VerticesPolygon은 폴리곤을 정의하기위한 Vertices의 목록 일뿐입니다. 마지막으로 Vertice는 LatLng와 비슷한 위도와 경도를가집니다. 문안 인사 – jgonza73