サポート » その他 » WordPressの地図表示

  • 解決済 doraemon2012

    (@doraemon2012)


    google maps API V3で現在地表示について

    WordPressにgoogle maps API V3で現在地の取得は出来ました。
    しかし現在地にマーカー(初期設定は水色の玉?)が表示されません。

    マーカー関連のソースが不足していると思っているのですが、調べても見つかりません。
    住所から取り込むなどは色々検索で引っかかるのですが、現在地を取得して現在地にマーカーを表示する方法のサイトがどうしても引っかかりません。

    サイトをご存知の方がいらっしゃいましたらよろしくお願い致します。
    また、そのようなソースを知っている方がいらっしゃいましたらよろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター IKEDA Yuriko

    (@lilyfan)

    地図の表示はどのように行なっていますか? スクラッチに書いた JavaScript で Google Maps API を叩いていますか? それとも Google Maps を表示するプラグインを使っていますか?

    プラグインを使っている場合は、その名前と入手先、プラグインの設定を教えてください。
    自分で書いたコードの場合は、そのコードをここに書かないとアドバイスが得られないと思います。コードを書くときは、入力欄の上にある「code」ボタンを使ってください。

    トピック投稿者 doraemon2012

    (@doraemon2012)

    ご回答ありがとうございます。

    プラグインではなくテーマに地図を入れるような形で公式の説明やほかの方のサイトを見て手をいれてます。

    コードは次の通りです。

    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
    <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/library/map/markermanager.js"></script>
    <script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/library/map/markerclusterer_packed.js"></script>
    <script type="text/javascript">
    
    /**
     * Data for the markers consisting of a name, a LatLng and a pin image, message box content for
     * the order in which these markers should display on top of each
     * other.
     */
    var markers = {<?php echo $catinfo_arr;?>};
    
    var map = null;
    var mgr = null;
    var mc = null;
    var markerClusterer = null;
    var showMarketManager = true;
    
    function setCategoryVisiblity( category, visible ) {
       var i;
       if ( mgr && category in markers ) {
          for( i = 0; i < markers[category].length; i += 1 ) {
             if ( visible ) {
                mgr.addMarker( markers[category][i], 0 );
             } else {
                mgr.removeMarker( markers[category][i], 0 );
             }
          }
          mgr.refresh();
       }
    }
    
    function initialize() {
          var latlng = new google.maps.LatLng(35.709984,139.810703);
          var opts = {
            zoom: 15,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById("map_canvas"), opts);
    
       // Try W3C Geolocation (Preferred)
          if(navigator.geolocation) {
             browserSupportFlag = true;
             navigator.geolocation.getCurrentPosition(function(position) {
              initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
              map.setCenter(initialLocation);
            }, function() {
              handleNoGeolocation(browserSupportFlag);
            });
       // Try Google Gears Geolocation
       } else if (google.gears) {
       browserSupportFlag = true;
       var geo = google.gears.factory.create('beta.geolocation');
       geo.getCurrentPosition(function(position) {
         initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
         map.setCenter(initialLocation);     }, function() {       handleNoGeoLocation(browserSupportFlag);
       });
       // Browser doesn't support Geolocation
       } else {     browserSupportFlag = false;
        handleNoGeolocation(browserSupportFlag);
       }      
    
       function handleNoGeolocation(errorFlag) {
         if (errorFlag == true) {
            alert("Geolocation service failed.");
            initialLocation = newyork;
         } else {
           alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
           initialLocation = siberia;
         }
         map.setCenter(initialLocation);
       } 
    
       mgr = new MarkerManager( map );
       google.maps.event.addListener(mgr, 'loaded', function() {
          if (markers) {
             for (var level in markers) {
                google.maps.event.addDomListener( document.getElementById( level ), 'click', function() {
                   setCategoryVisiblity( this.id, this.checked );
                });
                for (var i = 0; i < markers[level].length; i++) {
                   var details = markers[level][i];
                   var image = new google.maps.MarkerImage(details.icons,new google.maps.Size(PIN_POINT_ICON_WIDTH, PIN_POINT_ICON_HEIGHT));
                   var myLatLng = new google.maps.LatLng(details.location[0], details.location[1]);
                   markers[level][i] = new google.maps.Marker({
                      title: details.name,
                      position: myLatLng,
                      icon: image,
                      clickable: true,
                      draggable: false,
                      flat: true
                   });
                   attachMessage(markers[level][i], details.message);
                }
                mgr.addMarkers( markers[level], 0 );
             }
             mgr.refresh();
          }
       });
    
    	// but that message is not within the marker's instance data
    	function attachMessage(marker, msg) {
    	  var infowindow = new google.maps.InfoWindow(
    		  { content: String(msg)
    		  });
    		var myEventListener = google.maps.event.addListener(marker, 'click', function() {
             infowindow.open(map,marker);
          });
    	}
    }
    google.maps.event.addDomListener(window, 'load', initialize);

    何か気づいた点でもご指摘頂ければと思います。
    どうぞよろしくお願い致します。

    トピック投稿者 doraemon2012

    (@doraemon2012)

    色々探した結果、

    showUserLocation()メソッドの引数に”YES”を指定するだけです。

    ということがわかりましたが上記のどの部分に入れるのかがわかりません。
    showUserLocation()は上記では指定できないのでしょうか?またその場合変わりになるものはあるのでしょうか。

    イメージしている青丸は
    http://ascii.jp/elem/000/000/611/611499/
    のサイトの画像のものです。

    追加情報が少なくて申し訳ございませんがよろしくお願い致します。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「WordPressの地図表示」には新たに返信することはできません。