2012-04-16 2 views
1

일련 번호가있는 mysql 테이블에 xml 파일에 쓰여지고 Google지도에 점으로 가져옵니다. 이것은 정상적으로 작동하는 것 같습니다. 단순히 각 점 사이에 폴리 라인을 생성하고 싶습니다. developer docs에서 각 행/점 집합에 대해 새 latlng 개체를 만드는 과정을 반복하는 것으로 나타났습니다. 데이터베이스에서 여러 줄을 생성하기 위해 일련의 점을 동적으로 호출 할 수있는 방법이 있습니까? 죄송합니다. 이것이 명백한 수정 프로그램 인 것 같으면 API API에 조금 익숙합니다. 미리 감사드립니다!여러 개의 mysql 지점에서 Google지도 폴리 라인 만들기

나는 외모를 사용하고 출력 XML 파일이 같은 :

Location name="2012-04-01 12:28:18" lat="42.9523010667" lon="-78.8189444333"/ 
Location name="2012-04-01 12:28:06" lat="42.95219345" lon="-78.81931905"/ 
Location name="2012-04-01 12:27:54" lat="42.9522356" lon="-78.8192848667"/..... etc 

HTML/스크립트지도에 XML의 좌표 호출 : developers.google에 문제

function load() { 
    if (GBrowserIsCompatible()) { 
    var map = new GMap2(document.getElementById("map")); 
    map.addControl(new GSmallMapControl()); 
    map.addControl(new GMapTypeControl()); 
    map.setCenter(new GLatLng(42.9521, -78.8198), 20); 

    GDownloadUrl("gmaps_genxml2.php", function(data) { 
     var xml = GXml.parse(data); 
     var markers = xml.documentElement.getElementsByTagName("Location"); 
     for (var i = 0; i < markers.length; i++) { 
     var name = markers[i].getAttribute("timestamp"); 
     var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
           parseFloat(markers[i].getAttribute("lon"))); 
     var marker = createMarker(point, name); 
     map.addOverlay(marker); 
     } 
    }); 

코드를 doc :

var flightPlanCoordinates = [ 
new google.maps.LatLng(37.772323, -122.214897), 
new google.maps.LatLng(21.291982, -157.821856), 
new google.maps.LatLng(-18.142599, 178.431), 
new google.maps.LatLng(-27.46758, 153.027892)]; 
    var flightPath = new google.maps.Polyline({ 
path: flightPlanCoordinates, 
strokeColor: "#FF0000", 
strokeOpacity: 1.0, 
strokeWeight: 2}); 

    flightPath.setMap(map);}}} 

function createMarker(point, name) { 
    var marker = new GMarker(point, customIcons[type]); 
    var html = "<b>" + name; 
    GEvent.addListener(marker, 'click', function() { 
    marker.openInfoWindowHtml(html); 
    }); 

    return marker; 
} 

현재 콘솔에 오류가 표시되지 않습니다. 이것은 내가 원래 게시물에서 두 개의 이전 코드 스 니펫을 구현하려고 시도했지만 모든 라인/포인트를 표시하는지도를 얻지는 않습니다. 그것이 포인트 변수를 정의하는 방식 일 수도 있습니다. 배열을 저장하는 것이 아니라 단일 점을 저장하는 것일까요? 나는 [포인트]를 정의 할 때 []을 사용해 보았습니다. 그러나 이것은 아무런 오류도 보이지 않았습니다 ...

function load() { 
if (GBrowserIsCompatible()) { 
// Create an instance of Google map 
var map = new GMap2(document.getElementById("map")); 
// Tell the map where to start 
map.setCenter(new GLatLng(42.9521, -78.8198), 20); 

GDownloadUrl("gmaps_genxml2.php", function(data) { 
var xml = GXml.parse(data); 
var markers = xml.documentElement.getElementsByTagName("Location"); 
for (var i = 0; i < markers.length; i++) { 
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon"))); 
var polyline = new GPolyline(point, '#ff0000', 5, 0.7); 
map.addOverlay(polyline); 
} 
}); 
}} 
+0

이 있습니까 배열에 삽입 할 '.push을'이 사용 하늘의 배열 을 ---- 만들? 그렇다면 표시하십시오. – SativaNL

+0

콘솔의 오류는 수정 된 게시물을 참조하십시오. 감사! – user1336528

+0

시도해보고 디버깅 할 수 있도록 JSFiddle을 만들 수 있습니까? – SativaNL

답변

0

작성했습니다! 여기 인터넷에 묻고 있었고, 뒤에있는 아이가 그 시간을 잘 알고있었습니다.

배열을 잘못 설정하고있었습니다. 문제를 해결하기 위해 : 을 ---- 콘솔 로그에 오류가

function load() { 

    if (GBrowserIsCompatible()) { 
// Create an instance of Google map 
var map = new GMap2(document.getElementById("map")); 

// Tell the map where to start 
map.setCenter(new GLatLng(42.9521, -78.8198), 20); 





GDownloadUrl("gmaps_genxml2.php", function(data) { 
     var xml = GXml.parse(data); 
     var markers = xml.documentElement.getElementsByTagName("Location"); 
     var points = []; 
     for (var i = 0; i < markers.length; i++) { 

     points.push(new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon")))); 
     } 
     var polyline = new GPolyline(points, '#ff0000', 5, 0.7); 
     map.addOverlay(polyline); 
    }); 

}} 
관련 문제