カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

GoogleMap ブラウザAPIキーの取得

現時点ではまだAPIキーがなくても表示されますが、APIキーの利用が必須となったようです。
今回はGoogleMapを利用するためのAPIキーの取得方法をご紹介します。

まずはウェブ向け Google Maps APIにアクセス。
「キーを取得」をクリックします。
001

APIキー取得までの説明が表示されますので、「続ける」をクリックしてください。
002

Googleのログインが必要ですので、促されたタイミングでログインしてください。
続きを読む…»

841 views

GoogleMapに円を描くJavaScript

GoogleMap上に円を描く方法をご紹介します。

CircleOptionsクラス

var myCircleOptions = {
    center: null,           // 中心の座標
    clickable: true,        // クリックの可否(デフォルトtrue)
    draggable: false,       // ドラッグの可否(デフォルトfalse)
    editable: false,        // 編集の可否(デフォルトfalse)
    fillColor: "#ffffff",   // 塗り潰しの色
    fillOpacity: 0.7,       // 塗り潰しの不透明度 0.0~1.0
    map: map,               // GoogleMapのインスタンス
    radius: 0,              // 半径(単位:m)
    strokeColor: "#6090ff", // 線の色
    strokeOpacity: 0.9,     // 線の不透明度 0.0~1.0
    strokePosition: 
        google.maps.StrokePosition.CENTER, // 線の位置(CENTER|INSIDE|OUTSIDE)
    strokeWeight: 3,        // 線の太さ(単位:ピクセル)
    visible: true,          // 表示の有無(デフォルトtrue)
    zIndex: 1               // 重なり順
}

設定したオプションを利用してサークルオブジェクトを作成します。

myCircle = new google.maps.Circle(myCircleOptions);

マップを後から設定する場合は

myCircle.setMap(map);

公式リファレンスはこちらから
https://developers.google.com/maps/documentation/javascript/reference#Circle

1,864 views

Google StreetView Image API

Googleストリートビューを静的な画像として表示する方法をご紹介します。
GoogleStaticMapのようにimgタグを使って表示することが可能です。

形式

<img src="https://maps.googleapis.com/maps/api/streetview?[パラメーター]" alt="">

パラメーター

location 緯度経度
size 表示する画像のサイズ
※最大640×640
heading カメラの方位(0~360) 0=北
pitch カメラのアングル(90~-90) 90=上 -90=下
fov カメラの水平視野(0~120) 0=狭い 120=広い
zoom カメラのズーム(0~5) 0=遠い 5=近い
key APIキー

API Keyの使用が推奨されているようです。
API KeyはGoogle Developer ConsoleでStreet View Image APIを有効にすると使用できるようになります。
続きを読む…»

1,794 views

jQuery スライドショー slick.js

レスポンシブに対応した多機能プラグイン「slick.js」のご紹介です。

slick.js

http://kenwheeler.github.io/slick/

個人的には、思ったようにしようとすると少しコツがいるな、という感じでした。

まずはjQueryとslick.js本体を読み込みます。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="slick-1.5.7/slick/slick.min.js"></script>

次にCSSを読み込み

<link rel="stylesheet" type="text/css" href="slick-1.5.7/slick/slick.css"/>
<link rel="stylesheet" type="text/css" href="slick-1.5.7/slick/slick-theme.css"/>

スライドさせたい画像等のコンテンツをbodyタグ内に記述します。

<ul class="your-class">
    <li>
        コンテンツ1
    </li>
    <li>
        コンテンツ2
    </li>
</ul>

続きを読む…»

16,779 views

GoogleMap イベントリスナーの追加と削除

GoogleMap API v3でのイベントの追加と削除について

GMapインスタンスを生成

var myOptions = {
    center: new google.maps.LatLng(35, 135),
    zoom: 12
};

var map = new google.maps.Map(document.getElementById("map"), myOptions);

例1)「zoom_changed」イベントを追加します。

google.maps.event.addListener(map, "zoom_changed", function(){ });

例2)「click」イベントを追加します。

google.maps.event.addListener(map, "click", function(e){ });

指定したイベントリスナーを削除する

google.maps.event.clearListeners(map, "zoom_changed");

全てのイベントリスナーを削除する

google.maps.event.clearInstanceListeners(map);

リスナーをオブジェクトとして作成し、そのインスタンスを指定してリスナーを削除する

var zoomChanged_listener = google.maps.event.addListener(map, "zoom_changed", function(){ 

});

google.maps.event.removeListener(zoomChanged_listener);

イベントの種類については下記をご参照ください。
[GoogleMap v3のmapオブジェクトのイベント]


2016年10月31日追記

GoogleMapの読み込み完了時に一度だけ実行するイベントを追加

google.maps.event.addListenerOnce(map, "idle", function(){ });

リサイズの場合はトリガーを使用します。

// divリサイズ時mapイベント
google.maps.event.addListener(map, "resize", function(LatLng)
{
    map.setCenter(LatLng, 10);
});

// divリサイズ時mapイベントのトリガー
document.getElementById("map").onresize = function()
{
    var LatLng = map.getCenter();
    google.maps.event.trigger(map, "resize", LatLng);
}
3,716 views

複数のマーカーを地図内に全て表示させるには

GoogleMap(v3)にて、複数追加したマーカーが
全て表示されるように位置と拡大比率を自動調整する機能があります。

以下のメソッドを使います。
google.maps.Map::fitBounds(bounds:LatLngBounds)

マップオブジェクトを生成します。

var map = new google.maps.Map(document.getElementById("map"));

表示領域を生成します。

var bounds = new google.maps.LatLngBounds();

表示領域にマーカーの位置を追加

bounds.extend(new google.maps.LatLng(35.705506, 139.752048)); //東京ドーム
bounds.extend(new google.maps.LatLng(35.633232, 139.882006)); //東京ディズニーランド
bounds.extend(new google.maps.LatLng(35.710349, 139.811346)); //東京スカイツリー

表示領域を地図に反映させます。

map.fitBounds (bounds);
2,616 views

正規表現の注意点

キャラクタークラス([])を使用する場合、[]内ではエスケープが無効化されます。
※言語の種類等によってエスケープが有効なものもあるようです。
その中で特殊な意味を持つ記号を通常のキャラクターとしてクラスに含めたいときは
記述する位置に注意する必要があります。
例えば「]」、「^」、「-」等です。

^ [の直後以外
] [の直後
リストの最後

参考URL: http://www.kt.rim.or.jp/~kbk/regex/regex.html

772 views

現在のURLを取得 JavaScript

JavaScriptで、現在表示しているページのURLを取得します。

document.write(window.location.protocol + "//" + window.location.host + window.location.pathname + "<br>\n");
document.write(window.location.protocol + "//" + window.location.hostname + window.location.pathname + "<br>\n");
document.write(document.URL);

出力結果

http://www.sankikensetsu.co.jp/test.html
http://www.sankikensetsu.co.jp/test.html
http://www.sankikensetsu.co.jp/test.html
813 views

iOSでのフォームラベル

iOSではHTMLタグ<label>が認識されないようです。

フォームのラベルはユーザーにとって当たり前というほど役に立ちます。
ですが、PCやAndroidではラベルのクリックイベントが認識されるのに、iOSでは認識されません。

そこで、ラベル付けに一工夫することで解決することができます。

例えば、チェックボックスを例にしてやってみましょう。

<label onclick=""><input type="checkbox" name="test" value="1">チェック1</label>

または

<input type="checkbox" id="t2" value="2">
<label for="t2" onclick="">チェック2</label>

空のクリックイベントを入れているところがミソです。

そして<head>内に、以下のJavaScriptを記述します。

document.getElementByTagName("label").click(function(){});

これでiOSでもラベルのクリックイベントが認識されるようになります。

参考URL:
http://blog.bluearrowslab.com/smartphone/topicks/55/

670 views

座標から住所を取得 GoogleMapAPI Geocoder

GoogleMap APIを利用して、座標から住所を取得します。

まず、座標オブジェクトを作成します。

location = new google.maps.LatLng([latitude], [longitude]);

ジオコーダーオブジェクトのインスタンスを生成

geocoder = new google.maps.Geocoder();

google.maps.Geocoderクラスのgeocodeメソッドでリクエストを送信し、返ってきたレスポンスを処理するコールバック関数を指定します。
複数の答えが返ってくる場合があるので、結果は配列になっています。

返ってきた結果のフォーマット済の文字列を取得する例

if(geocoder)
{
    geocoder.geocode(
        {location: location},
        function(geo_result, geo_response)
        {
            if(geo_response == "OK") {

                var tmpadd = "";
                tmpadd = geo_result[0].formatted_address;

                alert("住所:" + tmpadd);

            } else {

                alert(geo_response + "\n\n変換できませんでした。");

            }
        }
    );
}

続きを読む…»

5,235 views