sprintf関数での%Sが分かりません。
質問の背景は下記でのsprintf関数での%Sについてです。
https://developers.google.com/maps/articles/phpsqlsearch_v3?hl=ja#createmap
上記での流れは、添付画像のように、
・住所を入力することで 緯度経度が算出され、(center.lat() center.lng())
・また、半径('radiusSelect)が選択(この場合は20Km)されることで、
・選択住所(center.lat() center.lng())から選択半径内の登録店舗がgooglemapに表示される。
というものです。
(1)<「phpsqlsearch_genxml.php」に選択値を渡す。>(62行目)
var radius = document.getElementById('radiusSelect').value;
var searchUrl = 'phpsqlsearch_genxml.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
(※ 例えばcenter.lat()を緯度37 center.lng()を経度-122とします)
(2)<「phpsqlsearch_genxml.php」において、該当する店舗を見つけ出す。>
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];
・・・・・・
// Search the rows in the markers table
$query = sprintf("SELECT address, name, lat, lng, ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '%s' ORDER BY distance LIMIT 0 , 200",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
$result = mysql_query($query);
(※ ( 6371 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat )は中心地からの半径を求める公式)
上記(2)で書式指定(string)の%Sが使用されていますが、そこには下記数値文字が入ります。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 20
同じ%Sに対してそれぞれ、37・-122・20の異なった数値文字が対応される仕組みが分かりません。
ご教示お願いいたします。
お礼
理解できました。ありがとうございました。
補足
回答ありがとうございます。 できれば式も教えてもらえないでしょうか? 宜しくお願いします。