2010-11-28 4 views
0

현재 PHP로 고생하고 KML을 만드는 데 어려움을 겪고 있습니다. last.fm API (geoGetevents)를 사용하여 '위치'(예 : 맨체스터 사용자 검색)에서 이벤트를 가져온 다음 KML을 사용하여 JS보다 훨씬 편하게 사용합니다.PHP지도상의 여러 장소 표시에 대한 KML을 동적으로 생성

내 피드에서 Google지도에 연결할 때 잘못된 KML/KMZ 오류가 발생합니다. 그런데 왜 그런지 알고 있습니다. PHP가 생성하는 KML을 포함하여 모든 것이 하나의 파일에 포함되어 있습니다.

GET 변수로 그래서 URL은 http://example.net/dmp/search.php?city=bristol

Google지도는 후 URL의 나머지 부분을 무시하다 '?' - Google지도에 동적으로 생성 된 KML을 보낼 수있는 방법이 있습니까? 별도의 KML 파일을 만들 수 있습니까?

<kml xmlns="http://www.opengis.net/kml/2.2"> <!-- Sets KML header --> 
<Folder> 
<name>Gigs</name> 
     <Placemark><name>As I Lay Dying</name><description> etc 

PHP가 생성 한 최신 KML입니다.

이는 거품이 HTML로 클릭 아이콘 위에 표시 할 수 있도록 당신이 도움이 될 수 있습니다 희망, 당신이 당신의 설명 내부 CDATA 내부 링크를 넣어 가지고 내가 답을 가지고 있다고 생각

답변

0

사전에 감사합니다 그것은

좋은 예는 동적으로 생성 된 KML을 보내는 marinetraffic.com

입니다.

이 헤더 ('콘텐츠 유형을 넣어 파일을 출력하는 페이지의 상단에있는 아파치의 mime.types에 application/vnd.google-earth.kml + xml로의 KML

를이 추가 : 응용 프로그램을 /vnd.google-earth.kml+xml '); 당신이 http://code.google.com/apis/kml/documentation/kml_tut.html

에서 CDATA에 대해 많이 알 수

궁시렁 궁시렁

PS는 당신을 찾기 위해 네트워크 링크가 구글지도를 알려주는 KML 파일을 파일을 만들 도자기하셔야합니다 이 그것을 자동 업데이트

012을 다할 것으로 서버

<?xml version="1.0" encoding="UTF-8"?> 
    <kml xmlns="http://www.opengis.net/kml/2.2"> 
     <Folder> 
     <name>Network Links</name> 
     <visibility>0</visibility> 
     <open>0</open> 
     <description>Network link example 1</description> 
     <NetworkLink> 
      <name>Random Placemark</name> 
      <visibility>0</visibility> 
      <open>0</open> 
      <description>A simple server-side script that generates a new random 
      placemark on each call</description> 
      <refreshVisibility>0</refreshVisibility> 
      <flyToView>0</flyToView> 
      <Link> 
<refreshInterval>600.0</refreshInterval> 

<refreshMode>onInterval</refreshMode> 
      <href>http://yourserver.com/cgi-bin/randomPlacemark.py</href> 
      </Link> 
     </NetworkLink> 
     </Folder> 
    </kml> 

내가 새로 고침 간격을 추가

당신이 내 문제를 좀 봐 주시겠습니까? 하하 jope이 도움이

+0

고맙습니다. 문제를 살펴 보겠습니다.하지만 저는 PHP 전문가가 아닙니다! – cee

0

귀하의 질문은 약간 퍼지 었어. Google에서 가장 간단한 인터페이스 인 웹 사이트와 함께 사용하기 위해 동적 인 KML 파일을 만드는 방법에 대해 설명하겠습니다. 당신이 알고 있어야합니다

click here for example

첫 번째 문제는 동적 인 인터페이스로 웹 사이트를 사용하지 않도록하기 위해, 구글은 (당신이 그것을 변경했을 수 있지만, 캐시 구글 KML을 새로 고치는 빈도를 제한한다는 것입니다 그것). Google이 캐시를 새로 고침하기 전에 대개 10 분 이상 걸릴 것입니다.

따라서 가장 좋은 방법은 KML 이름을 변경하고 googlemaps에 대한 링크를 삽입하고 삽입 된지도를 새로 고치는 것입니다.

참고 : KML을 뱉어 내고 googlemaps 사이트에서 직접 PHP 파일을 호출하는 PHP 코드를 작성할 수 있습니다.

+0

ps : 이것은 이론적 인 대답이 아니므로, 내 웹 사이트의 실시간 사람/자산 추적기 (OpenLayers 및 OpenStreetMaps에 대한 리팩토링 중)에서이 상황을 성공적으로 해결하는 방법입니다. Google은 API 사용을 점차 제한하고 있으므로 무료 앱/웹 사이트에서 기술을 사용하는 것이 재정적으로 불가능합니다. –

+0

pps : jun2012부터 fly-to가 다시 작동하지만 LineString 추적이 제대로 작동하지 않습니다. 대부분의 경우 오버레이가 완전히 그려지지 않았습니다. googlemaps api의 새로운 버전에있는 다만 snafu일지도 모르다. 그것은 그 자체로 심각한 문제입니다. Google은 이전 버전과의 호환성에는 관심이 없습니다. API 버전간에 명령의 전체 패밀리가 변경 될뿐만 아니라 로직 및 구조도 변경됩니다. 나는 안정되고 일관된 플랫폼을 제공하기 위해 Google을 신뢰할 수 있기 때문에 6 개월의 개발 시간을 낭비했습니다. 나는이 실수를 반복하지 않을 것이다. OpenLayers가 방법입니다. –

관련 문제