2016-05-09 1 views
0

Googleマップをロードするページがあります。私はhttpを介してgetCurrentPositionを使用し、私はGoogleのAPIからの警告を受け取ります。問題はそれがjavascriptも破損し、それがすべてを破壊することです。コードはかなりの間働いていましたが、先週のことが壊れました。クロムのgetCurrentPositionがJavaScriptを破る

以下はhtmlとスクリプトです。あなたがHTMLでそれを追加し、それを実行して見ることができます

<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" /> 

</head> 
<body> 
    <header class="desktop"> 

    </header> 
    <div id="st-container" class="st-container"> 
     <div class="st-pusher"> 

      <div class="st-content"> 
       <div class="st-content-inner"> 
        <div class="logo-mobile"> 
        </div> 
        <section class="map-sections"> 
         <div style="position: absolute; z-index: 1000; width: 100%; margin-top: 30px;"> 
          <div class="row"> 
          <div class="large-12 columns"> 
           <div class="filter clearfix"> 
            <input type="text" id="search-field" placeholder="Search place"> 
            <span>eller...</span> 
            <a href="#" id="search-button" class="btn pink geolocate" onclick="showMap('true');">Search near you</a> 
           </div> 
          </div> 
          </div> 
         </div> 
         <div id="google_canvas"></div> 
          <script src="http://maps.googleapis.com/maps/api/js?v=3.exp&sensor=true"></script> 
          <script type="text/javascript"> 
           function showMap(userPos) { 

           if (!!navigator.geolocation) { 

            var map; 

            if (userPos == 'true') { 
             var mapOptions = { 
              zoom: 12, 
              enableHighAccuracy: true, 
              mapTypeControl: false, 
              streetViewControl: false, 
              mapTypeId: google.maps.MapTypeId.ROADMAP 
             }; 
            } 
            else { 
             var mapOptions = { 
              zoom: 5, 
              enableHighAccuracy: false, 
              mapTypeControl: false, 
              streetViewControl: false, 
              mapTypeId: google.maps.MapTypeId.ROADMAP 
             }; 
            } 

            map = new google.maps.Map(document.getElementById('google_canvas'), mapOptions); 

            navigator.geolocation.getCurrentPosition(function (position) { 

             var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

             var sectionList = [ 
              ['Stockholm', 59.327, 18.067], 
              ['Göteborg', 57.70889, 11.97348] 
             ]; 

             var mapPinUser = '/dist/img/map-pin-user.png'; 
             var mapPinSection = '/dist/img/map-pin-section.png'; 

             // User's position 
             var marker = new google.maps.Marker({ 
              position: geolocate, 
              map: map, 
              icon: mapPinUser, 
              title: "ok" 
             }); 

             for (var i = 0; i < sectionList.length; i++) { 
              marker = new google.maps.Marker({ 
              position: new google.maps.LatLng(sectionList[i][1], sectionList[i][2]), 
              map: map, 
              icon: mapPinSection, 
              id: i, 
              animation: google.maps.Animation.DROP, 
              title: sectionList[i][0] 
              }); 
             } 

             if (userPos == 'true') { 
              map.panTo(geolocate); 
             } 
             else { 
              map.setCenter({ lat: 61.58549, lng: 15.02930 }); 
             } 

            }); 

           } else { 
            document.getElementById('google_canvas').innerHTML = 'No Geolocation Support.'; 
           } 

           } 

           showMap('false'); 
          </script> 
         <style> 
          #google_canvas { 
           height: 65vh; 
          } 
         </style> 
        </section> 
       </div> 
      </div> 
     </div> 
    </div> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
</body> 
</html> 
+2

javascriptコンソールの警告を見て、getCurrentLocationはHTTPSでのみサポートされています。 – geocodezip

+0

十分ですが、コードは先週のようにhttpsなしで動作していました。それが最後の変更ですか? – Agraell

+1

かなり長い間Chromeのjavascriptコンソールに警告があり、以前に発表されました。 – geocodezip

答えて

1

getCurrentLocationはChromeのみになりましたhttps://上でサポートされています(stackoverflowのを試みたが、スクリプトを使用して、いくつかの問題がありました)。

かなり長い間、Chromeのjavascriptコンソールに警告があり、以前に発表されました。クローム50以降で

reference from your comment

、Chromeはもはや非セキュアな接続で配信ページからHTML5ジオロケーションAPIを使用してユーザの位置を取得するサポートしていません。つまり、Geolocation API呼び出しを行っているページは、HTTPSなどの安全なコンテキストから提供されなければなりません。

+0

素晴らしいどうもありがとう! – Agraell

関連する問題