0

これは単なる考えです。実行できない可能性があります。ググっても何も思いつきません。正しく検索しているとは思えません。問題の言い方がよくわからないので、説明します:

そこで、PHP で次のようなテーブルから位置データを取得します。

$result = $Connect->query($sql);
$i = rand(00000000, 99999999);
while($locationData = $result->fetch_assoc()){
    $locationName = $locationData['locationName'];
    $locationStreetAndHouse = $locationData['locationStreetNameAndNumber'];
    $locationState = $locationData['locationState'];
    $locationLat = $locationData['locationLatitude'];
    $locationLon = $locationData['locationLongitude'];
    $returnThis .= 'var latLonV'.$i.' = new    google.maps.LatLng('.$locationLat.','.$locationLon.')
var marker'.$i.' = new google.maps.Marker({
position: latLonV'.$i.',
map: map,
title: "'.$locationName.'"
});';
$i++;
}
$Connect->close();  

次に、次のように JS に送り返します。

$JSONData = array("true", $returnThis); 
echo json_encode($JSONData); 

次にJSでこれを行います:

success:function (recievedData) {
  if (recievedData[0] == 'true') {
    initializeMap(recievedData[1]);
  }

}


function initializeMap(markerVar) {
    var myLatlng = new google.maps.LatLng(40.915117, -74.072465);
    var mapOptions = {
        zoom: 16,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);

    var marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
        title: 'THIS IS ME!'
    });

    markerVar;
}

});

もちろん、マップは問題なく表示され、最初の場所が表示されますが、 に保存されている JS データを取得してmarkerVar使用するにはどうすればよいですか?

私はそれを正しく説明していることを願っています.それが愚かな方法である場合は申し訳ありません.私はそれを行う別の方法も受け入れています.

4

1 に答える 1

2

現在、JavaScriptコードを含む文字列を作成しています。その後、JSONを介してこの文字列をエンコードし、クライアントに転送します。

ただし、ここでは実行せず、文字列として渡してみてください。

より良いアプローチは、次のようにPHPでオブジェクトの配列を作成することです。

$returnVal = array();
while( /*...*/ ) {
  /* your init code */

  $returnVal[] = array( 'lat' => $locationLat, 'lon' => $locationLon /* etc */ );
}

echo json_encode( array( true, $returnVal ) );

クライアントでは、これらの値を使用してすべてのマーカーを動的に生成できます。

function initializeMap(markerVar) {
  /* your init code */

  var marker = [], latLonV;
  for( var i=markerVar.length; i--; ) {
    // create the latlon object
    latLonV = new google.maps.LatLng( markerVar[i]['lat'], markerVar[i]['lon'] )

    // set the marker
    marker.push(new google.maps.Marker({
                         position: latLonV,
                         map: map,
                         title: markerVar[i]['title']
                       }));
  }
}

marker必要に応じて、オブジェクトとlatLonVオブジェクトを別の配列に挿入して、後でそれらを保持したい場合があります。

于 2013-01-24T10:21:36.360 に答える