javascript 地図ページの住所露出変更·现在地表示追加(5/8リリース?)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 地図ページの住所露出変更·现在地表示追加(5/8リリース?)相关的知识,希望对你有一定的参考价值。

// map, marker変数にアクセスするためグローバルに
window.abIssue334 = {
    map: map,
    marker: marker
}
(function($, util) {

  window.issue343 = {

    start: function(pattern) {
      var that = this;

      switch (pattern) {
        case 1:
          this.openInfo();
          break;
        case 2:
          this.openInfo();
          $('#map_detail').remove();
          this.addInfo();
          break;
        case 3:
          // 本番でもバグ?下にできる変な余白を削除
          this.setBodyHeightChange();
          this.addWindow();
          break;
        case 4:
          this.setBodyHeightChange();
          this.getGeolocation('api');
          break;
        case 5:
          this.setBodyHeightChange();
          this.getGeolocation('img');
          break;
        case 6:
          this.setBodyHeightChange();
          this.watchGeolocation();
          break;
        default:
          alert('該当するパターンがありません');
          break;
      }
    },

    openInfo: function() {
      var $mapName = $('#map_name').clone();

      // ノードを再生成して既存の.toggleが走らないように
      $('#map_name').remove();
      $('#map_info').prepend($mapName);
      // 見た目調整
      $('#map_contents').height('auto');
      $('.map_ttl').css('margin', '4px 0');
      $('.icon_datauri').remove();
    },

    addInfo: function() {
      var that = this;
      var $info = '<div class="shopFooter"><div class="shopFooter__header"><h2 class="shopFooter__title">銀座 さかなさま</h2><p class="shopFooter__kana">ギンザ サカナサマ</p></div><div class="shopFooter__body"><div class="footerShopCV"><div class="footerShopCV__layout"><div class="hf-col hf-mb12"><div class="hf-col__6"><div class="hf-button"><div class="hf-button__body"><a href="tel:050-3477-7619" class="hf-button__item hf-button__item--big" onclick="sc_count_shop(\'phone_to_2\')"><div class="hf-ic-tel"><div><p class="hf-text--big hf-clr-white"><span>電話する</span></p><p class="hf-text--small hf-clr-white"><span>050-3477-7619</span></p></div></div></a></div></div></div><div class="hf-col__6 hf-pl8"><div class="hf-button"><div class="hf-button__body"><a href="https://r.gnavi.co.jp/plan/p735402/plan-reserve/plan/plan_list/" class="hf-button__item hf-button__item--big" onclick="sc_count(\'plan_reserve_06\')"><div class="hf-ic-net-yoyaku"><div><p class="hf-text--big hf-clr-white"><span>ネット<br>予約する</span></p></div></div></a></div></div></div></div><div class="hf-col"><div class="hf-col__6"><div class="hf-button"><div class="hf-button__body"><a href="http://line.naver.jp/R/msg/text/?%E3%81%90%E3%82%8B%E3%81%AA%E3%81%B3-%E9%8A%80%E5%BA%A7%20%E3%81%95%E3%81%8B%E3%81%AA%E3%81%95%E3%81%BE%0A050-3477-7619%0A%E6%9D%B1%E4%BA%AC%E9%83%BD%E4%B8%AD%E5%A4%AE%E5%8C%BA%E9%8A%80%E5%BA%A71-5-10%20%E9%8A%80%E5%BA%A7%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%83%95%E3%82%A1%E3%82%A4%E3%83%96%E3%83%93%E3%83%AB5F%0Ahttps%3A%2F%2Fr.gnavi.co.jp%2Fp735402%2F%3Fsc_lid%3Dscl_sbtn_ln" class="hf-button__item hf-button__item--default" onclick="sc_count(\'sns_line_01\')"><div class="hf-ic-line"><div><p class="hf-text--big hf-bold"><span>LINEで送る</span></p></div></div></a></div></div></div><div class="hf-col__3 hf-pl8"><div class="hf-button"><div class="hf-button__body"><a href="http://my.gnavi.co.jp/restaurant/regist.php?shopid=p735402&wMode=2" class="hf-button__item hf-button__item--default js−chottogButton" data-chg-content="1402" onclick="sc_count(\'tnp_sp_bookmark\')"><div class="hf-ic-chottog-top"><div><p class="hf-text--small hf-bold"><span class="js-chottogText">行きたい</span></p></div></div></a></div></div></div><div class="hf-col__3 hf-pl8"><div class="hf-button"><div class="hf-button__body"><a href="https://r.gnavi.co.jp/p735402/map/" class="hf-button__item hf-button__item--default"><div class="hf-ic-map"><div><p class="hf-text--small hf-bold"><span>地図</span></p></div></div></a></div></div></div></div></div></div></div></div>';
      var $pageTop = '<div class="pageTop js-page-top"><a href="#page" class="js-anchor"><p>ページの先頭へ</p></a></div>';

      $('#map_name').after($pageTop).after($info);

      // ページトップのclickイベントを再アタッチ
      $('.js-anchor').click(function() {
        var href= $(this).attr('href');
        that.anchorLink(href);
        return false;
      });

      // チョットぐも
      that.chottog();
    },

    anchorLink: function(href) {
      var speed = 500;
      var target = $(href === '#' || href === '' ? 'html' : href);
      var position = target.offset().top;
      $('html, body').animate({scrollTop:position}, speed, 'swing');
    },

    chottog: function() {
      // チョットぐのイベントをアタッチ
    },

    setBodyHeight: function() {
      $('body').height($('#page').height());
    },

    setBodyHeightChange: function() {
      var that = this;

      // 初回
      that.setBodyHeight();

      // 既存jsとの調整
      $(window).on('orientationchange', function() {
        setTimeout(function() {
          that.setBodyHeight();
        }, 500);
      });
    },

    addWindow: function() {
      var info = $('.map_else').find('th:contains("住所")').next().text();
      var infowindow = new google.maps.InfoWindow({
        content: info,
        maxWidth: 203
      });

      infowindow.open(window.abIssue334.map, window.abIssue334.marker);

      window.abIssue334.marker.addListener('click', function() {
        infowindow.open(window.abIssue334.map, window.abIssue334.marker);
      });
    },

    getGeolocation: function(method) {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
          var pos = {
            lat: position.coords.latitude,
            lng: position.coords.longitude
          };

          // API
          if (method === 'api') {
            markerLocationOuter = new google.maps.Circle({
              strokeColor: '#A5D8F5',
              strokeOpacity: 1,
              strokeWeight: 1,
              fillColor: '#A5D8F5',
              fillOpacity: 0.5,
              map: window.abIssue334.map,
              center: pos,
              radius: 50
            });

            markerLocationInner = new google.maps.Circle({
              strokeColor: '#fff',
              strokeOpacity: 1,
              strokeWeight: 2,
              fillColor: '#0073bb',
              fillOpacity: 1,
              map: window.abIssue334.map,
              center: pos,
              radius: 20
            });
          }

          // 画像
          if (method === 'img') {
            markerLocation = new google.maps.Marker({
              position: pos,
              map: window.abIssue334.map,
              icon: {
                url: 'img/_abtest/issue343/marker.png',  // svgでも可
                scaledSize: new google.maps.Size(50, 50)  // Ratina対応
              }
            });
          }
        },
        function(error) {
          var errorNo = error.code;

          // 返ってくるエラーコードの番号
          // 0: 原因不明のエラー
          // 1: ユーザーが位置情報の取得を許可しなかった
          // 2: 電波状況などで位置情報が取得できなかった
          // 3: 時間がかかり過ぎた

          var errorInfo = [
            '原因不明のエラーが発生しました',
            '位置情報の取得が許可されませんでした',
            '電波状況などで位置情報が取得できませんでした',
            'タイムアウトしました'
          ] ;
          var errorMessage = errorInfo[errorNo];

          console.log(errorMessage);
        });
      } else {
        console.log('お使いの端末はGeoLacation APIに対応していません');
      }
    },

    watchGeolocation: function() {
      var id, target, options;

      function success(position) {
        var pos = {
          lat: position.coords.latitude,
          lng: position.coords.longitude
        };
        console.log('= ', pos);

        // 画像
        markerLocation = new google.maps.Marker({
          position: pos,
          map: window.abIssue334.map,
          icon: {
            url: 'img/_abtest/issue343/marker.png',  // svgでも可
            scaledSize: new google.maps.Size(50, 50)  // Ratina対応
          }
        });

        var crd = position.coords;

        if (target.latitude === crd.latitude && target.longitude === crd.longitude) {
          console.log('Congratulations, you reached the target');
          navigator.geolocation.clearWatch(id);
        }
      };

      function error(err) {
        console.warn('ERROR(' + err.code + '): ' + err.message);
      };

      target = {
        latitude : 35.689487,
        longitude: 139.691706
      }

      options = {
        enableHighAccuracy: false,
        timeout: 5000,
        maximumAge: 0
      };

      id = navigator.geolocation.watchPosition(success, error, options);
    }

  }

  util.abtestRun(343);

})(jQuery, util);

以上是关于javascript 地図ページの住所露出変更·现在地表示追加(5/8リリース?)的主要内容,如果未能解决你的问题,请参考以下文章

javascript 第11期:20180620 - no73。トップページのFV改善フェーズ1(ポイントモーダル,店铺名下の整理)

csharp ステージのシーンをAdditiveで読み込む

markdown 网络ページの最适化

php 固定ページの画像パスを省略

html 画面イメージのBase64编码を取得

php PHPで现在のページのURLを取得する