2017-11-23 18 views
-1

私は方向サービスを使用してGoogleマップを作成しようとしています。開始点として使用するユーザーの場所を取得しようとするまでうまくいきます。アイデアは、現在の場所から3つの場所の1つにユーザーの指示を与えることです。私はGoogleのAPIに関するいくつかのガイドラインに従ってきました。Googleマップのユーザーの場所を取得する

私は、ユーザの位置を取得しようとすると、私が使用してみてください:

if (navigator.geolocation) { 
     var position = navigator.geolocation.getCurrentPosition(); 
     googleCoords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 


     } 

     else { 
      alert("No geolocation!"); 
     } 

しかし、これはマップを壊す何らかの理由が? Directionsサービスで使用する変数にユーザーの座標を取得しようとしていて、地図の起点として使用しています。おかげ

<!DOCTYPE html> 
<html> 
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
<meta charset="utf-8"> 
<title>Displaying text directions with <code>setPanel()</code></title> 
<style> 

    #map { 
    height: 100%; 
    } 

    html, body { 
    height: 100%; 
    margin: 0; 
    padding: 0; 
    } 
    #floating-panel { 
    position: absolute; 
    top: 10px; 
    left: 25%; 
    z-index: 5; 
    background-color: #fff; 
    padding: 5px; 
    border: 1px solid #999; 
    text-align: center; 
    font-family: 'Roboto','sans-serif'; 
    line-height: 30px; 
    padding-left: 10px; 
    } 
    #right-panel { 
    font-family: 'Roboto','sans-serif'; 
    line-height: 30px; 
    padding-left: 10px; 
    } 

    #right-panel select, #right-panel input { 
    font-size: 15px; 
    } 

    #right-panel select { 
    width: 100%; 
    } 

    #right-panel i { 
    font-size: 12px; 
    } 
    #right-panel { 
    height: 100%; 
    float: right; 
    width: 390px; 
    overflow: auto; 
    } 
    #map { 
    margin-right: 400px; 
    } 
    #floating-panel { 
    background: #fff; 
    padding: 5px; 
    font-size: 14px; 
    font-family: Arial; 
    border: 1px solid #ccc; 
    box-shadow: 0 2px 2px rgba(33, 33, 33, 0.4); 
    display: none; 
    } 
    @media print { 
    #map { 
     height: 500px; 
     margin: 0; 
    } 
    #right-panel { 
     float: none; 
     width: auto; 
    } 
    } 
    </style> 
    </head> 
    <body> 
    <div id="floating-panel"> 
    <strong>Start:</strong> 
    <select id="start"> 

    <option value="USERLOCATION">Your location</option> 

    </select> 
    <br> 
    <strong>End:</strong> 
    <select id="end"> 
    <option value="memorial university of newfoundland">St. John's 
Campus</option> 
    <option value="marine insitute of memorial university of 
newfoundland">Marine Insitute</option> 
    <option value="grenfell campus">Grenfell Campus</option> 

    </select> 
</div> 
<div id="right-panel"></div> 
<div id="map"></div> 
<script> 
    var lat = null; 
    var long = null; 
    var googleCoords = null; 
    function initMap() { 

    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(); 
     googleCoords = new google.maps.LatLng(position.coords.latitude, 
position.coords.longitude); 


     } 

     else { 
      alert("No geolocation!"); 
     } 


    var directionsDisplay = new google.maps.DirectionsRenderer; 
    var directionsService = new google.maps.DirectionsService; 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 7, 
     center: {lat: 41.85, lng: -87.65} 
    }); 
    directionsDisplay.setMap(map); 
    directionsDisplay.setPanel(document.getElementById('right-panel')); 

    var control = document.getElementById('floating-panel'); 
    control.style.display = 'block'; 
    map.controls[google.maps.ControlPosition.TOP_CENTER].push(control); 

    var onChangeHandler = function() { 
     calculateAndDisplayRoute(directionsService, directionsDisplay); 
    }; 
    document.getElementById('start').addEventListener('change', 
onChangeHandler); 
    document.getElementById('end').addEventListener('change', 
onChangeHandler); 
    } 

    function calculateAndDisplayRoute(directionsService, directionsDisplay) { 
    var start = document.getElementById('start').value; 
    var end = document.getElementById('end').value; 
    directionsService.route({ 
     origin: start, 
     destination: end, 
     travelMode: 'DRIVING' 
    }, function(response, status) { 
     if (status === 'OK') { 
     directionsDisplay.setDirections(response); 
     } else { 
     window.alert('Directions request failed due to ' + status); 
     } 
    }); 
    } 
</script> 
<script async defer 
src="https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=initMap"> 
</script> 
    </body> 

+0

あなたが投稿したコードは大丈夫と思われますが、私はその問題がどこか他のところにあると思います。 – SamaBalaYam

答えて

0

あなたは、関数getCurrentPositionに行う必要があります。

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

このようなコールバック関数から位置を取得する必要があります。

if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position){ 
     var googleCoords = { 
      lat: position.coords.latitude, 
      lng: position.coords.longitude 
     }; 
    }); 
    } else { 
    alert("Geolocation is not supported by this browser."); 
    } 
関連する問題