2013-11-01 2 views
0

Google지도 v2 프로젝트를 v3으로 업그레이드 중입니다. 지금까지 잘 진행되었지만 솔루션을 찾을 수 없었던 문제가 발생했습니다 (해결 방법이 있지만).Google지도 Ajax 호출 : v2와 v3의 차이점

지도를 방문한 사용자는 위치를 클릭 할 수 있습니다. 위도가 & 인 InfoWindow에 표시되고 해당 데이터를 XML 파일에 저장할 수 있습니다. 나는 v2에서이 작업을 OK했다.

v3에서도 작동하지만 위험한 것처럼 보이는 모든 Ajax 검사를 제거해야만 작동합니다. 는 V2에서 나는했다 :

 var request = GXmlHttp.create(); 

// open the request to storeMarker.php on server 
request.open('GET', 'storeMarker.php' + getVars, true); 
request.onreadystatechange = function() { 
    if (request.readyState == 4) { 
     // the request is complete 
     var xmlDoc = request.responseXML; 
     // retrieve the root document element (response) 
     var responseNode = xmlDoc.documentElement; 
     // retrieve the type attribute of the node 
     var type = responseNode.getAttribute("type"); 

     // retrieve the content ofthe responseNode 
     var content = responseNode.firstChild.nodeValue; 

     //check to see if it was an error, or success 
     if (type != 'success') { 
      alert(content); 
     } else { 
      // create a new marker and add its info window 
      var latlng = new GLatLng(parseFloat(lat), parseFloat(lng)); 
      var marker = makeTempMarker(latlng, content, bus); 
      map.addOverlay(marker); 
      map.closeInfoWindow(); 
     } 
    } 

은 어떻게 든 GXmlHttp.create이() 나는 모든 XML 인 'storeMarker.php'을 호출하고 있지 않다 파일 대처 것으로 보인다. storeMarker.php 파일은 XML 파일을 열고 새로운 마커를 저장합니다. 이 코드는 v2에만 적용되는 'PHP 및 Ajax로 시작하는 Google Maps 애플리케이션'(Apress : Purvis, Sambells & Turner, 2006)에서 나왔습니다.

GXmlHttp.create()는 더 이상 v3에서 사용할 수 없으며, 내가 대신 (함수가 여기에 재현되지 않음) Ajax 요청을 여는 짧은 크로스 브라우저 기능을 사용했습니다 :

var request = getAjaxObject(); 

을 지금을 JS는 'request.responseXML'에 대한 질식을합니다. 나는 'request.responseText'를 시도했지만 (놀랍지도 않지만) 그 중 하나는 작동하지 않는다.

내 질문은 무엇을 대신합니까?

위에서 말했듯이 'status == 200'확인 이외의 응답 확인을 제거하고 적절한 v3 구문을 사용하면 마커 데이터가 저장되고 임시 마커가 정식으로 표시됩니다. 그러나 그것은 '안전'하다고 느끼지 않습니다.

+1

왜 V3 코드가 작동하지 않는지 알고 싶다면 V2 코드를 게시 하시겠습니까? –

+0

[데모 갤러리에서 구문 분석] (http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/) – geocodezip

+0

(현재까지) 내 V3 코드는 동일하지만 초기 인스턴스 생성을 제외하고 요청. 미안하다. 분명히하지 않았다. –

답변

0

'storeMarker.php'파일에 헤더 ('Content-Type : text/xml');가 있어야한다는 것을 발견했습니다. (그것은 번역에서 길을 잃었다). 이걸 되돌려 놓으면 스크립트의 다음 줄로 나옵니다. (!),하지만 여기에서 문제를 해결할 수 있기를 바랍니다.

관련 문제