2017-11-20 9 views
-1

내 스토어 로케이터가 사용자의 현재 위치를 중심으로 설정되어 있지만 사용자가 자신의 위치를 ​​허용하지 않을 때 어떻게 내 위치를 기본값으로 만들 수 있습니까? 알려지기 위해? else 문에있는 코드가 작동하지 않지만 이유가 확실하지 않습니다. 이 (!!navigator.geolocation가 true)가 실행되지 않습니다 때문에 다른 사람의구글 맵 사용자의 현재 위치를 중심으로 플러스 백업으로 기본 위치

google.maps.event.addDomListener(window, 'load', function() { 

(function() { 

    if(!!navigator.geolocation) { 

     var map; 

     var mapOptions = { 
      zoom: 12, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

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

     navigator.geolocation.getCurrentPosition(function(position) { 

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

      map.setCenter(geolocate); 

     }); 

    } else { 

    var map = new google.maps.Map(document.getElementById('map-canvas'), { 
     center: new google.maps.LatLng(37.7749, -122.4194), 
     zoom: 12, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
    } 

    var panelDiv = document.getElementById('panel'); 

    var data = new MedicareDataSource; 

    var view = new storeLocator.View(map, data, { 
    geolocation: false, 
    features: data.getFeatures() 
    }); 

    new storeLocator.Panel(panelDiv, { 
    view: view 
    }); 

})(); 
}); 
+1

콘솔은 무엇을 말하는가? 일하지 않음으로써 무엇을 의미하는지 설명해 주시겠습니까? –

+0

가능한 [Geolocation map by default] (https://stackoverflow.com/questions/33092631/geolocation-map-by-default) – geocodezip

답변

0

코드는 작동하지 않습니다 : 여기에 내가 가진 것입니다. geolocation을 사용할 수 있지만 오류가 발생하면 error 함수가 호출되지만 사용자 정의 함수가 정의되어 있지 않습니다.

getCurrentPosition 방법 (the documentation)에서 다음과 같이 정의된다

navigator.geolocation.getCurrentPosition (성공 [오류 [옵션])
파라미터
성공 - 콜백 Position 객체를 유일한 입력 매개 변수로 취하는 함수입니다.
오류 - 선택 사항 - PositionError 객체를 유일한 입력 매개 변수로 사용하는 선택적 콜백 함수입니다.
옵션 - 선택 사항 - 선택 사항 인 PositionOptions 개체입니다. 그런 다음

function error(err) { 
    console.log('ERROR('+err.code+'): '+err.message); 
    if (map && map.setCenter) map.setCenter(new google.maps.LatLng(37.7749, -122.4194)) 
}; 

.getCurrentPosition 호출에 추가 :

navigator.geolocation.getCurrentPosition(function(position) { 
    var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
    map.setCenter(geolocate); 
    }, error); 

proof of concept fiddle (https: works)
proof of concept fiddle (http: fails due to non-secure origin)

코드 SNI

지도의 중심을 설정하는 오류 기능 추가 ppet :

var map; 
 

 
function error(err) { 
 
    console.log('ERROR(' + err.code + '): ' + err.message); 
 
    if (map && map.setCenter) map.setCenter(new google.maps.LatLng(37.7749, -122.4194)) 
 
}; 
 

 
google.maps.event.addDomListener(window, 'load', function() { 
 

 
    if (!!navigator.geolocation) { 
 

 
    var mapOptions = { 
 
     zoom: 12, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }; 
 

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

 
    navigator.geolocation.getCurrentPosition(function(position) { 
 
     var geolocate = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
 
     map.setCenter(geolocate); 
 
    }, error); 
 

 
    } else { 
 

 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
 
     center: new google.maps.LatLng(37.7749, -122.4194), 
 
     zoom: 12, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    } 
 
});
html, 
 
body, 
 
#map-canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map-canvas"></div>

+0

정말 고마워요 !! –