0

私はcakephpとjavascriptで働いています。シナリオは次のとおりです。マップ アイコンをクリックすると、Google マップを表示する jquery 関数が呼び出されます。現在、JavaScript を使用して、ユーザーはドラッグして Google マップの現在のマーカー位置を変更できます。値もビューに設定されます。しかし、コントローラーでこれらの値(緯度、経度)にアクセスするにはどうすればよいですか? セッション変数で緯度と経度を設定したいのですが、JavaScriptでセッション変数を設定できず、コントローラーで使用できません。以下は私のコードです:

    function initialize() {

  var latLng = new google.maps.LatLng(lat,long);
  var map = new google.maps.Map(document.getElementById('mapCanvas'), {
    zoom:8,
    center: latLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP

  });
  var marker = new google.maps.Marker({
    position: latLng,
    title: 'Point A',
    map: map,
    draggable: true
  });

  // Update current position info.
  //alert(" initilize"); 
  updateMarkerPosition(latLng);
  geocodePosition(latLng);

  // Add dragging event listeners.
  google.maps.event.addListener(marker, 'dragstart', function() {
    //updateMarkerAddress('Dragging...');
   // alert("dragStart"+marker.getPosition()); // access this value in controller
  });

  google.maps.event.addListener(marker, 'drag', function() {
   // updateMarkerStatus('Dragging...');
    updateMarkerPosition(marker.getPosition());
    alert(marker.getPosition()); // access this value in controller
  });

  google.maps.event.addListener(marker, 'dragend', function() {
   // updateMarkerStatus('Drag ended');
    geocodePosition(marker.getPosition());
    alert(marker.getPosition()); // access this value in controller
  });
}

コントローラーで:

 public function map()
    {
         //access lat, long here

    }

それ、どうやったら出来るの?

4

1 に答える 1

0

JavaScript と PHP の接続は、AJAX 技術を使用して行うことができます。

このように、JavaScript コードはコントローラー内の具体的なアクションを呼び出します。そこに入ると、それをセッションに保存したり、やりたいことを何でも実行したりできます。

アクションは、X 秒ごとに、または任意の変更時に呼び出すことができます。それは、呼び出すタイミングと、ユーザーからキャッチできる可能性のあるイベントによって異なります。

これは私が意味するものの例です:

$(document).ready(function(){
    //calling the function every 30 seconds
    setInterval(function(){
        getUserSavings();
        }, 30*1000);
});

function getUserSavings(){
    $.post("http://"+ document.domain + "/users/getSavings.json",
        function(dat){  
            //do whatever you want with the resulting data (dat)
            $('#totalSavings span').html(dat['result']['savings']);
    });
}

拡張機能を使用する必要はありませんがjson、ビューを定義しなくてもアクションを呼び出すことができます。詳細については、ドキュメントを参照してください。

于 2013-02-19T10:39:54.760 に答える