1

Code Igniter と Googlemaps ライブラリを使用しています。このライブラリは、新しいマーカーごとに InfoWindows の内容を含め、多くの Javascript コードを動的に生成しますが、通常のビューのように別のテンプレート ファイルに保存したいと思います。

このJavascriptコードがあります(Googlemapsのライブラリから):

        var lat = marker.getPosition().lat();
        var long = marker.getPosition().lng();

        var windowContent = "";

        if( _new ) {
            var newIW = new google.maps.InfoWindow( { content: windowContent } );

私がやりたいことはwindowContent 、テンプレートファイルからロードすることです。この変数のフォームを動的に生成し、上記で定義した変数を使用することに既に成功していますlatlong、Code Igniter でこれを実現するにはどうすればよいでしょうか? load->viewController のコンテキストにないため、使用できません。また、CI のセキュリティ上の制約により、include()またはどちらも使用できません。readfile()

ヒントはありますか?

4

1 に答える 1

2

純粋な JavaScript を使用して緯度と経度を取得し、クエリ文字列に緯度と経度を含む URL を作成し、xhr を使用して ajax 呼び出しを行います。

var lat = marker.getPosition().lat();
var long = marker.getPosition().lng();

var xhr;
var url = "http://myurl.to/script.php?lat="+lat+"&lng="+long;
if(typeof XMLHttpRequest !== 'undefined') 
    xhr = new XMLHttpRequest();
else {
    //Get IE XHR object
    var versions = ["MSXML2.XmlHttp.5.0", 
            "MSXML2.XmlHttp.4.0",
            "MSXML2.XmlHttp.3.0", 
            "MSXML2.XmlHttp.2.0",
            "Microsoft.XmlHttp"];

    for(var i = 0, len = versions.length; i < len; i++) {
        try {
            xhr = new ActiveXObject(versions[i]);
            break;
        }
        catch(e){}
    }
}
xhr.onreadystatechange = function(){
    //This function is called every so often with status updates
    //It is complete when status is 200 and readystate is 4

    if(xhr.status == 200 && xhr.readyState === 4) {  
        //Returned data from the script is in xhr.responseText
            var windowContent = xhr.responseText;

            //Create the info window
            var newIW = new google.maps.InfoWindow( { content: windowContent } );

            //Pass newIW to whatever other function to use it somewhere
    }
};

xhr.open('GET', url, true);
xhr.send();

jQueryのようなライブラリを使用する場合、次のようになります

var lat = marker.getPosition().lat();
var long = marker.getPosition().lng();
var url = "http://myurl.to/script.php";
jQuery.ajax({
   "url":url,
   "data":{ //Get and Post data variables get put here
      "lat":lat,
      "lng":long
   },
   "dataType":"html", //The type of document you are getting, assuming html
                      //Could be json xml etc
   "success":function(data) { //This is the callback when ajax is done and successful
      //Returned data from the script is in data
      var windowContent = data;

      //Create the info window
      var newIW = new google.maps.InfoWindow( { content: windowContent } );

      //Pass newIW to whatever other function to use it somewhere
   }
});
于 2013-07-29T14:28:18.540 に答える