2012-01-27 7 views
1

私は、ユーザーの位置(および移動)を表示し、毎秒更新するWebアプリケーションにGPS座標を送信するAndroidアプリケーションを作成しています。私はマップが同時に複数のユーザーの場所を表示して更新できるようにする必要がありますが、これを行う方法はわかりません。ユーザがボタンを押すと、その人を識別するための乱数が生成される。座標はIDと一緒にデータベースに絶えず送られます。マッププログラムは、AJAXを使用して毎秒場所を取得し、地図上の場所を更新します。これはすべて動作します。Googleマップで複数のポリラインを作成するデータベースから複数のIDを受信

私がする必要があるのは、プログラムが新しいIDを確認できるようにすることです。新しいIDがある場合は、そのユーザーの新しいポリラインを作成し、すべてのユーザーの場所をリアルタイムで更新し続けます。 JavaScriptにはクラスはありませんが、関数で作成することができます。以下は私のコードです。誰かが私を方向性で指し示すことができれば、主にどこで、どのようにこのクラスを作るのでしょうか?

 function initialize() { 
    var myLatlng = new google.maps.LatLng(latitude, longitude); 
    var myOptions = { 
     zoom: 6, 
     center: myLatlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    } 


    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var points = [];//new google.maps.LatLng(35, -75)];   
     $(function() { 
     $(document).ready(function(){ 
      setInterval(function(){ 
       $.ajax({          
        url: 'api.php',     //the script to call to get data   
        data: "",      //you can insert url arguments here to pass to api.php for example "id=5&parent=6" 
        dataType: 'json',    //data format  
        success: function(data){   //on recieve of reply       
         lati = data[1];    //get id 
         longi = data[2];   //get name 
         var myLatlngt = new google.maps.LatLng(lati, longi); 

         points.push(new google.maps.LatLng(lati, longi)); 

         var polyline = new google.maps.Polyline({ 
          map: map, 
          path: points, 
          strokeColor: "#FF0000", 
          strokeOpacity: 1.0, 
          strokeWeight: 2 
          }); 
         polyline.setMap(map); 

         //var image = 'icon.png'; 
         var marker = new google.maps.Marker({ 
          position: myLatlngt, 
          title:"Hello World!", 
          //icon: image 
         }); 
         marker.setMap(map); 

        } 
       }); 
      }, 1000); 
     }); 
    }); 

「API、PHPは」データベースからタプルを引っ張るとlati = data[1]が返される配列から抽出された緯度であるファイルです。

答えて

1

この例では、1秒ごとに1つのポリラインしか描画しません。現在のマップ境界のすべての新しいポリラインを送信し、古いポリラインを削除して新しいポリラインを作成することができます。現在のマップboundriesのためのポリラインを受信する

polyline.setMap(null); 

var bounds = map.getBounds(); 
var southWest = bounds.getSouthWest(); 
var northEast = bounds.getNorthEast(); 
var coord_xpos = northEast.lng(); 
var coord_xneg = southWest.lng(); 
var coord_ypos = northEast.lat(); 
var coord_yneg = southWest.lat(); 

アヤックスのような "データ" 変数送信する必要があります:現在

$.ajax({ 
data: {coord_xpos: coord_xpos, coord_xneg: coord_xneg, coord_ypos: coord_ypos, coord_yneg: coord_yneg} 
+0

をポリラインを削除する

ポリラインは「成長中」のままです。基本的にデータベースからコードを取り出して追加することで、リアルタイムでユーザーを追跡して表示しますポリラインを構築し続けている配列(var points)に渡します。私は同時に複数のユーザーを追跡できる必要があります。 DB内の 'user1'を探してそのポリラインに追加し、 'user2'を探してそのポリラインを同時に構築することもできます。各ユーザーのために新しいオブジェクトをインスタンス化する場合と同様です。 – mkyong

+0

次に、ユーザーごとに1つずつ複数のポリラインを描く必要があります。 – machineaddict

+0

はい、他のものを削除せずにこれを行うにはどうすればよいですか? – mkyong

関連する問題