作成者別アーカイブ: 後藤 祐一

後藤 祐一 について

フリーランスとしてWebプログラミングを行っています。
宜しくお願いします。

Google Maps API V3 ドラッグ中にセンターの緯度経度取得

ここではGoogle Maps API V3 マーカーをドラッグ中にセンターの緯度経度を取得する方法について解説しています。

GoogleMap

デモはこちら
http://office-goto.info/demo/drag-center/

サンプルソース

google.maps.event.addDomListener(window, 'load', function() {
    var latlng = new google.maps.LatLng(35.671277, 139.718489);
    var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("gmap"), options);

    // InfoWindowオブジェクト
    var infowindow = new google.maps.InfoWindow();

    // Markerオブジェクト
    var marker = new google.maps.Marker({
        position: latlng,
        map: map
    });

    // マーカクリック時
    google.maps.event.addListener(marker, 'click', function (e) {
        infowindow.setContent('Hello World');
        infowindow.open(map, marker);
    });

    // ドラッグ中センター取得
    google.maps.event.addListener(map, 'drag', dispLatLng);
    function dispLatLng(){
        var center = map.getCenter();
        $('#lat').attr('value', center.lat());
        $('#lng').attr('value', center.lng());
    }
});

ドラッグ中にセンターの緯度経度取得する場合まず、ドラッグ中のイベントを登録します。
マップのセンターは「map.getCenter();」で取得できるので、例ではTextフィールドに表示させています。

Google Maps API V3 マーカーをドラッグ&ドロップで動かして緯度経度取得

ここではGoogle Maps API V3 マーカーをドラッグ&ドロップで動かして緯度経度取得する方法について解説しています。

GoogleMap

デモはこちら
http://office-goto.info/demo/marker-draggable/

サンプルソース

google.maps.event.addDomListener(window, 'load', function() {
    var latlng = new google.maps.LatLng(35.671277, 139.718489);
    var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("gmap"), options);

    // InfoWindowオブジェクト
    var infowindow = new google.maps.InfoWindow();

    // Markerオブジェクト
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        draggable: true
    });

    // Markerのドラッグ終了イベント
    google.maps.event.addListener(marker, "dragend", function(e) {
        $('#lat').attr('value', e.latLng.lat());
        $('#lng').attr('value', e.latLng.lng());
    });
});

まず、Markerをドラッグ&ドロップで移動させるにはMarkerのdraggable:trueで動かせるようになります。
そして、Markerのドラッグ終了イベントを定義しイベントから緯度経度を取得しています。

Google Maps API V3 InfoWindowを複数表示

ここではGoogle Maps API V3 InfoWindowを複数表示する方法を解説しています。

GoogleMap

デモはこちら
http://office-goto.info/demo/infowindow-plurality2/

サンプルソース

google.maps.event.addDomListener(window, 'load', function() {
    var latlng = new google.maps.LatLng(35.671277, 139.718489);
    var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("gmap"), options);

    // Marker:LatLng / InfoWindow:text
    var arrData = new Array();
    arrData[0] = {"LatLng":new google.maps.LatLng(35.671277, 139.718489), "text": "Hellow"};
    arrData[1] = {"LatLng":new google.maps.LatLng(35.66991, 139.715291), "text": "GoodBye"};

    // setMarkerDataを配列分
    for (i = 0; i < arrData.length; i++) {
        setMarkerData(i);
    }

    // MarkerとInfoWindowを登録
    function setMarkerData(n) {
        var marker = new google.maps.Marker({
            position: arrData[n]["LatLng"],
            map: map,
            title: "ツールチップ" + (n + 1),
            icon: "icon.png"
        });
        // InfoWindowオブジェクト
        var infowindow = new google.maps.InfoWindow();
        google.maps.event.addListener(marker, 'click', function (e) {
            infowindow.setContent(arrData[n]["text"]);
            infowindow.open(map, marker);
        });
    }
});

InfoWindowを複数表示する場合には独自関数にローカルでInfoWindowオブジェクトを定義します。
こうすることでInfoWindowを複数表示することが出来ます。

Google Maps API V3 InfoWindowを複数のマーカーから1つだけ表示

ここではGoogle Maps API V3 InfoWindowを複数のマーカーから1つだけ表示する方法を解説しています。

GoogleMap

デモはこちら
http://office-goto.info/demo/infowindow-plurality/

サンプルソース

google.maps.event.addDomListener(window, 'load', function() {
    var latlng = new google.maps.LatLng(35.671277, 139.718489);
    var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("gmap"), options);

    // Marker:LatLng / InfoWindow:text
    var arrData = new Array();
    arrData[0] = {"LatLng":new google.maps.LatLng(35.671277, 139.718489), "text": "Hellow"};
    arrData[1] = {"LatLng":new google.maps.LatLng(35.66991, 139.715291), "text": "GoodBye"};

    // InfoWindowオブジェクト
    var infowindow = new google.maps.InfoWindow();

    // setMarkerDataを配列分
    for (i = 0; i < arrData.length; i++) {
        setMarkerData(i);
    }

    // MarkerとInfoWindowを登録
    function setMarkerData(n) {
        var marker = new google.maps.Marker({
            position: arrData[n]["LatLng"],
            map: map,
            title: "ツールチップ" + (n + 1),
            icon: "icon.png"
        });
        // マーカクリック時
        google.maps.event.addListener(marker, 'click', function (e) {
            infowindow.setContent(arrData[n]["text"]);
            infowindow.open(map, marker);
        });
    }
});

InfoWindowを複数のマーカーから1つだけ表示するには独自関数の中にローカルとしてMarkerオブジェクトとInfoWindowリスナーを登録します。

Google Maps API V3 InfoWindowオブジェクト

ここではGoogle Maps API V3 InfoWindowオブジェクトについて解説しています。

GoogleMap

デモはこちら
http://office-goto.info/demo/infowindow/

サンプルソース

google.maps.event.addDomListener(window, 'load', function() {
    var latlng = new google.maps.LatLng(35.671277, 139.718489);
    var options = {
        zoom: 16,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("gmap"), options);

    // InfoWindowオブジェクト
    var infowindow = new google.maps.InfoWindow();

    // Markerオブジェクト
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: "ツールチップ",
        icon: "icon.png"
    });

    // マーカクリック時
    google.maps.event.addListener(marker, 'click', function (e) {
        infowindow.setContent('Hello World<br />改行HTML表記が使えます。');
        infowindow.open(map, marker);
    });
});

InfoWindowを使用するにはInfoWindowをMarkerオブジェクトに登録します。
InfoWindowはHTML、CSSが適応されて表示されます。