2014-01-23 2 views
0

내지도 api에서 kml 파일을로드하는 중 Im이 코드를 사용하여 클릭 이벤트를 발생 시켰습니다.모양을 설정하는 방법 kml에서 editabe

google.maps.event.addListener(ctaLayer, 'click', function (kmlEvent) { 
    setSelection(kmlEvent.featureData.name);        
    //alert(kmlEvent.featureData.name); 
    //showInContentWindow(text); 
}); 

은 그게 전부는 함수

function setSelection(shape) { 
    clearSelection(); 
    selectedShape = shape; 
    shape.setEditable(true); 
} 

내가 그것으로이 문제가 아니오, KML 파일이 나에게 각각 다른 이름이 다각형을 제공 호출합니다. Testerjahoor. 하지만 jahoor을 클릭하면 언제나 다각형 Tester을 얻을 수 있습니다. 왜 다른 것들을 선택할 수 없습니까?

두 번째 문제는 kml 편집 가능한 폴리곤을 다시 설정할 수 없다는 것입니다. 오류가 발생합니다. Uncaught TypeError: Object Tester has no method 'setEditable'

누군가 내가 잘못하고있는 것을 알고 있습니까?

조각 KML 파일의 구글 API의 문서 스택에 또는에서 찾을 수 있습니다 : KmlLayer를에서

<Placemark id="Tester"> 
    <styleUrl>#transYellowPolyActive</styleUrl> 
    <name>Tester</name> 
    <Polygon> 
     <outerBoundaryIs> 
      <LinearRing> 
      <tessellate>0</tessellate> 
      <coordinates>           6.30889892578125,53.28820543193896 6.29791259765625,53.28410053532493 6.233367919921875,53.21096737507053 6.5093994140625,53.19698389904798 6.50390625,53.27096221595853 
      </coordinates> 
      </LinearRing> 
     </outerBoundaryIs> 
    </Polygon> 
</Placemark> 
<Placemark id="jahoor"> 
    <styleUrl>#transYellowPolyActive</styleUrl> 
     <name>jahoor</name> 
      <Polygon> 
      <outerBoundaryIs> 
       <LinearRing> 
       <tessellate>0</tessellate> 
       <coordinates>           6.168479919433594,53.30318495818702 6.143760681152344,53.29579845109269 6.138267517089844,53.27281003615208 6.195259094238281,53.2707568976735 6.2010955810546875,53.29867113343524 
       </coordinates> 
        </LinearRing> 
      </outerBoundaryIs> 
     </Polygon> 
    </Placemark> 
+0

오류 '개체 테스터의 "지도에 KML을 구문 분석"버튼을 클릭있는 방법'은'new'를 사용하지 않고 테스터 생성자를 호출하기 때문에 setEditable''이 될 수가 없습니다. 다른 문제는 클로저 문제와 비슷하지만 코드가 없으면 말하기 어렵습니다. –

+0

무슨 뜻인지 설명해 주시겠습니까? –

+0

'new' : 당신의 객체 테스터가 분명히 정의되었습니다. 그렇지 않으면 정의되지 않은 객체에 대한 오류가 발생합니다. 제대로 초기화되지 않은 것 같습니다. 그 이유는'name.pgk.Tester()'라고 부르는'new name.pkg.Tester()'를 호출하는 대신에 예일 수 있습니다. 이것은 단지 추측입니다. –

답변

1

다각형 편집 할 수 없습니다, 그들은 기본 다각형 타일로하지 렌더링됩니다. geoxml3 또는 geoxml-v3과 같은 타사 KML 파서를 사용하면 기본 Google지도 Javascript API v3 다각형으로 렌더링 할 수 있습니다. 그러나 타일 기반 렌더링보다 효율적이지는 않을 것입니다. 특히 복잡한 다각형 또는 많은 다각형의 경우 더욱 그렇습니다.

나는 그것이 유효 확인하기 위해 KML을 수정하는 경우

:

<kml> 
<Document> 
<Placemark id="Tester"> 
    <styleUrl>#transYellowPolyActive</styleUrl> 
    <name>Tester</name> 
    <Polygon> 
     <outerBoundaryIs> 
      <LinearRing> 
      <tessellate>0</tessellate> 
      <coordinates>           6.30889892578125,53.28820543193896 6.29791259765625,53.28410053532493 6.233367919921875,53.21096737507053 6.5093994140625,53.19698389904798 6.50390625,53.27096221595853 
      </coordinates> 
      </LinearRing> 
     </outerBoundaryIs> 
    </Polygon> 
</Placemark> 
<Placemark id="jahoor"> 
    <styleUrl>#transYellowPolyActive</styleUrl> 
     <name>jahoor</name> 
      <Polygon> 
      <outerBoundaryIs> 
       <LinearRing> 
       <tessellate>0</tessellate> 
       <coordinates>           6.168479919433594,53.30318495818702 6.143760681152344,53.29579845109269 6.138267517089844,53.27281003615208 6.195259094238281,53.2707568976735 6.2010955810546875,53.29867113343524 
       </coordinates> 
        </LinearRing> 
      </outerBoundaryIs> 
     </Polygon> 
    </Placemark> 
</Document> 
</kml> 

그리고 this page

에 붙여 넣는 그 다음 날이 편집 가능한 다각형을 제공합니다, "지도에 KML을 구문 분석"을 클릭합니다.

하거나 this map

+0

안녕하세요, 내 kml 유효합니다 내 질문에 볼 수있는 일부입니다 .. 그래서 만약 내가 내 kml 다각형을 변경하려면 geoxml 함께 작동하는 새로운 시스템을 만들 필요가? –

+0

KML이 너무 복잡하지 않으면 목표를 달성하는 한 가지 방법입니다. FusionTables/FusionTablesLayer를 사용할 수도 있습니다 (FusionTablesLayer를 사용하여 수정할 필요가있는 폴리곤에 대해 KML을 구문 분석하기 위해 geoxml3과 같은 편집 불가능한 폴리곤을 표시합니다). – geocodezip

+0

방법은 그것을하고, 사용자가 다각형을 그릴 수있는 팝업에서 일부 필드를 기입하고 데이터베이스에 안전합니다. 그런 다음 api는 데이터베이스의 데이터로 kml generetad 파일을 열고지도에서 다각형을 반환합니다. 하지만 사용자가 다각형을 클릭하면 편집 할 수 있어야합니다. –

관련 문제