<% /*
    $Revision$
    $Id$

    File:               GetLatLng.inc
    Description:        Berekent obv Google GeoCode van een adres de LatLong coordinaten
    Parameters:
        obj_key         p_adres (string): [Plaats]+[Straat]+[Huisnr], dus b.v. "Amsterdam+Kalverstraat+1"
    Result              v_result (string): [Lat]|[Long], dus b.v. "52.123456|4.567890"
    Context:
    Note:               Zorg dat je een passende Google Maps API key aanvraagt
                        Veronderstelt dat bij het object Lat Lon coordinaten
                        zijn ingesteld.
*/
%>

<%
function GetLatLng (p_adres){
  // p_adres is varchar: [Plaats]+[Straat]+[Huisnr], dus b.v. "Amsterdam+Kalverstraat+1"
  // Resultaat v_result varchar: [Lat]|[Long], dus b.v. "52.123456|4.567890"  
  __Log("GetLatLng, p_adres:" + p_adres);
  var v_result = ""; 
  if (p_adres!= ""){
  
    var v_apikey = S("alg_fg_remote_maps");
    if (v_apikey){
      
      v_url_GoogleGeoCode = "https://maps.googleapis.com/maps/api/geocode/xml?address=" + encodeURIComponent(p_adres) + "&key=" + safe.url(v_apikey);      
      
      __Log("v_url_GoogleGeoCode: " + v_url_GoogleGeoCode);
      
      var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP.6.0");
      xmlhttp.open("GET", v_url_GoogleGeoCode, false);
      xmlhttp.send();
      
      __Log("Response: " + xmlhttp.responseText);
      
      var xmlResp = Server.CreateObject("Msxml2.DOMDocument.6.0");
      xmlResp.resolveExternals = false; // XML-data vertrouwen we niet altijd
      xmlResp.validateOnParse = false; // maar dan kun je geen DTD's meer controleren
      
      xmlResp.loadXML(xmlhttp.responseText);
      
      var strQuery = "GeocodeResponse/result/geometry/location/lat";    
      var v_lat = xmlResp.selectSingleNode(strQuery);
      
      var strQuery = "GeocodeResponse/result/geometry/location/lng";
      var v_lng = xmlResp.selectSingleNode(strQuery);
      
      if (v_lat && v_lng)
      { __Log(v_lat.text);
        __Log(v_lng.text);
        v_result = v_lat.text + "|" + v_lng.text;
      }
      else
      {
        __Log("No LatLong Result");
      }
    }
  }
  return(v_result);
}
%>