오늘 :
4,410 / 20,191
어제 :
18,021 / 177,351
전체 :
20,068,796 / 275,448,931

Open API 공부

Naver, Daum, Google Open API

cyber
추천 수 : 19 / 0
조회 수 : 21867
2007.11.30 (10:59:13)


http://www.subkorea.com/api/google/MapsAPI/map-distance.html 두개소간의 거리 Km로 - xml : 좌표와 거리간 관계?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Google Maps</title>
    <script src="http://maps.google.com/maps?file=api&v=2&key=abc...xyz" type="text/javascript"></script>
  </head>
  <body onunload="GUnload()">


    <div id="map" style="width: 550px; height: 450px"></div>
    <div id="info"></div>
    <a href="dist.htm">Back to the tutorial page</a>


    <noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b>
      However, it seems JavaScript is either disabled or not supported by your browser.
      To view Google Maps, enable JavaScript by changing your browser options, and then
      try again.
    </noscript>


    <script type="text/javascript">
    //<![CDATA[

    if (GBrowserIsCompatible()) {
      var gmarkers = [];
      var i = 0;

      function createMarker(point,name,html) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
        gmarkers[i] = marker;
        gmarkers[i].label = name;
        i++;
        return marker;
      }
      
      
     var degreesPerRadian = 180.0 / Math.PI;
     var radiansPerDegree = Math.PI / 180.0;

     // Returns the bearing in degrees between two points.
     // North = 0, East = 90, South = 180, West = 270.
     function bearing( from, to ) {
       // See T. Vincenty, Survey Review, 23, No 176, p 88-93,1975.
       // Convert to radians.
       var lat1 = from.latRadians();
       var lon1 = from.lngRadians();
       var lat2 = to.latRadians();
       var lon2 = to.lngRadians();

       // Compute the angle.
       var angle = - Math.atan2( Math.sin( lon1 - lon2 ) * Math.cos( lat2 ), Math.cos( lat1 ) * Math.sin( lat2 ) - Math.sin( lat1 ) * Math.cos( lat2 ) * Math.cos( lon1 - lon2 ) );
       if ( angle < 0.0 )
        angle  += Math.PI * 2.0;

       // And convert result to degrees.
       angle = angle * degreesPerRadian;
       angle = angle.toFixed(1);

       return angle;
     }
      
      
      
      
      
      // create the map
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.addControl(new GScaleControl());
      map.setCenter(new GLatLng(43.907787,-79.359741), 9);


      // Read the data
      var request = GXmlHttp.create();
      request.open("GET", "example.xml", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          var xmlDoc = GXml.parse(request.responseText);
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
          for (var i = 0; i < markers.length; i++) {
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);
            var html = markers[i].getAttribute("html");
            var label = markers[i].getAttribute("label");
            var marker = createMarker(point,label,html);
            map.addOverlay(marker);
          }
          var info_html="Straight line distances<br>";
          for (var i = 0; i<markers.length; i++) {
            for (var j=0; j<markers.length; j++) {
              if (i != j) {
                var d=gmarkers[i].getPoint().distanceFrom(gmarkers[j].getPoint())/1000;
              
              
                var html = "<b>From "+gmarkers[i].label+ " To "+gmarkers[j].label;
                html += "</b> "+ d.toFixed(5) +" kilometres ";
                html += "  Bearing: "+bearing(gmarkers[i].getPoint(),gmarkers[j].getPoint())+" degrees<br>";


                info_html += html;
              }
            }
          }
          
          // put the assembled results into the info div
          document.getElementById("info").innerHTML = info_html;
        }
      }
      request.send(null);
    }

    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
    // This Javascript is based on code provided by the
    // Blackpool Community Church Javascript Team
    // http://www.commchurch.freeserve.co.uk/  
    // http://econym.googlepages.com/index.htm

    //]]>
    </script>
  </body>

</html>

번호 제목 닉네임 등록일 조회 추천
12 event-bind 첨부 파일
cyber
2007-11-30 19731 19
11 event-arguments 첨부 파일
cyber
2007-11-30 19393 10
10 event-closure 첨부 파일
cyber
2007-11-30 20728 15
9 event-context 첨부 파일
cyber
2007-11-30 20882 17
8 event-simple 첨부 파일
cyber
2007-11-30 19380 19
Selected map-distance 첨부 파일
cyber
2007-11-30 21867 19
6 map-range 첨부 파일
cyber
2007-11-30 18694 27
5 map-dualmap 첨부 파일
cyber
2007-11-30 18088 15
4 map-infowindow 첨부 파일
cyber
2007-11-30 18201 16
3 map-animate 첨부 파일
cyber
2007-11-30 18545 12
Tag List