カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

座標範囲の算出

ある地点から指定した半径以内に該当する座標を絞り込みたいとき、検索に使用する値を得るサンプルです。

考え方としては、指定した半径を基に矩形を作成し、その範囲に含まれる座標を検索する、というものです。
残念ながら“指定した半径を基に作成した円の中に含まれる”ではありません。

通常は2点間の距離を算出し、半径以内に収まるかを出したほうがいいのですが、比較するデータが多い場合は1つ1つ処理しているとかなり負荷がかかります。
そのため、ざっくり検索する方法をご紹介します。

今回はPHPのコードですが、JavaScriptなど他の言語でも利用できます。

まず、算出に必要な度数毎の距離を宣言します。

// 緯度1秒の平均距離 約30.9m
// 緯度35度上の緯度1秒の距離 約30.8m
$lat_length = 30.9;

// 緯度35度上の経度1秒の距離 約25m
$lng_length = 25;

探したい範囲の半径(km)を設定します。 続きを読む…»

3,959 views

座標の変換

緯度・経度を日本測地系から世界測地系(WGS84)に変換する
コードは例としてPHPで書いています。

function cnvCoords($ido, $keido)
{
    $ido   = $ido - $ido * 0.00010695  + $keido * 0.000017464 + 0.0046017;
    $keido = $keido - $ido * 0.000046038 - $keido * 0.000083043 + 0.010040;

    return array($ido, $keido);
}

緯度・経度を世界測地系(WGS84)から日本測地系に変換する

function cnvDeCoords($ido, $keido)
{
    $ido   = $ido + $ido * 0.00010695  - $keido * 0.000017464 - 0.0046017;
    $keido = $keido + $ido * 0.000046038 + $keido * 0.000083043 - 0.010040;

    return array($ido, $keido);
}

※変換の際、経度を計算するために必要な緯度は、変換後の値であることに注意

Javaの場合 続きを読む…»

3,004 views

気をつけよう 文字コード

例えば、外部JavaScriptファイルを読み込む場合

<script type="text/javascript" src="..."></script>

と読み込むが、サイト内に複数の文字コードが混在している場合は注意が必要である。
MySQL等ではEUCを使用しているが、Ajaxを使いたいので該当ページのみUTFにしているとき
柔軟なブラウザならある程度ファジーに解釈してくれるが、そうでないものもある。

そこで、厳密に文字コードを指定してあげよう。

<script charset="..." type="text/javascript" src="..."></script>

こうしてやると、問題が解決する可能性が極めて高い。

1,310 views

Googlemap マウスホイールのズーム

GoogleMap v2.78以降

マウスホイールのズーム可否を指定するメソッド

enableScrollWheelZoom // 有効
disableScrollWheelZoom // 無効
2,053 views

色々な数値変換

[VB]

CInt(n)
CDbl(n)
CLng(n)

[JavaScript]

Number(n)
parseInt(n)
parseFloat(n)

[C#]

int.Parse(n)
Int16.Parse(n)
Int32.Parse(n)
Convert.ToInt32(n)

long.Parse(n)

float.Parse(n)
Convert.ToSingle(n)

double.Parse(n)
Convert.ToDouble(n)

[PHP]

intval(n)
floatval(n)
2,029 views