2015-10-03 63 views
1

我有一個簡單的index.php鏈接到Windows上的XAMPP中的Apache服務器。我正在嘗試查看Google Direction Service API如何與此JavaScript示例一起使用,並且想要玩一下它。但爲了使用它,我需要創建一個服務器密鑰,我正確地添加了我的IP地址,併爲我生成了一個隨機密鑰。但現在我有這個關鍵點,我怎麼把它放到這個php文件中,這樣它才允許我查看地圖,因爲當然這只是一個例子,給我一個授權錯誤。Google Directions Api API將API密鑰鏈接到php文件

我在Google開發者頁面上閱讀到:「要在您的請求中指定一個密鑰,請將其作爲關鍵參數的值。這可能是問題,但如果這是我的答案,我該怎麼做?這個API密鑰在底部聲明。

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> 
    <meta charset="utf-8"> 
    <title>Directions service (complex)</title> 
    <style> 
     html, body { 
     height: 100%; 
     margin: 0; 
     padding: 0; 
     } 
     #map { 
     height: 100%; 
     } 
     #warnings-panel { 
     width: 100%; 
     height:10%; 
     text-align: center; 
     } 
#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; 
} 

    </style> 
    </head> 
    <body> 
    <div id="floating-panel"> 
    <b>Start: </b> 
    <select id="start"> 
     <option value="penn station, new york, ny">Penn Station</option> 
     <option value="grand central station, new york, ny">Grand Central Station</option> 
     <option value="625 8th Avenue, New York, NY, 10018">Port Authority Bus Terminal</option> 
     <option value="staten island ferry terminal, new york, ny">Staten Island Ferry Terminal</option> 
     <option value="101 E 125th Street, New York, NY">Harlem - 125th St Station</option> 
    </select> 
    <b>End: </b> 
    <select id="end"> 
     <option value="260 Broadway New York NY 10007">City Hall</option> 
     <option value="W 49th St & 5th Ave, New York, NY 10020">Rockefeller Center</option> 
     <option value="moma, New York, NY">MOMA</option> 
     <option value="350 5th Ave, New York, NY, 10118">Empire State Building</option> 
     <option value="253 West 125th Street, New York, NY">Apollo Theater</option> 
     <option value="1 Wall St, New York, NY">Wall St</option> 
    </select> 
    </div> 
    <div id="map"></div> 
    &nbsp; 
    <div id="warnings-panel"></div> 
    <script> 
function initMap() { 
    var markerArray = []; 

    // Instantiate a directions service. 
    var directionsService = new google.maps.DirectionsService; 

    // Create a map and center it on Manhattan. 
    var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 13, 
    center: {lat: 40.771, lng: -73.974} 
    }); 

    // Create a renderer for directions and bind it to the map. 
    var directionsDisplay = new google.maps.DirectionsRenderer({map: map}); 

    // Instantiate an info window to hold step text. 
    var stepDisplay = new google.maps.InfoWindow; 

    // Display the route between the initial start and end selections. 
    calculateAndDisplayRoute(
     directionsDisplay, directionsService, markerArray, stepDisplay, map); 
    // Listen to change events from the start and end lists. 
    var onChangeHandler = function() { 
    calculateAndDisplayRoute(
     directionsDisplay, directionsService, markerArray, stepDisplay, map); 
    }; 
    document.getElementById('start').addEventListener('change', onChangeHandler); 
    document.getElementById('end').addEventListener('change', onChangeHandler); 
} 

function calculateAndDisplayRoute(directionsDisplay, directionsService, 
    markerArray, stepDisplay, map) { 
    // First, remove any existing markers from the map. 
    for (var i = 0; i < markerArray.length; i++) { 
    markerArray[i].setMap(null); 
    } 

    // Retrieve the start and end locations and create a DirectionsRequest using 
    // WALKING directions. 
    directionsService.route({ 
    origin: document.getElementById('start').value, 
    destination: document.getElementById('end').value, 
    travelMode: google.maps.TravelMode.WALKING 
    }, function(response, status) { 
    // Route the directions and pass the response to a function to create 
    // markers for each step. 
    if (status === google.maps.DirectionsStatus.OK) { 
     document.getElementById('warnings-panel').innerHTML = 
      '<b>' + response.routes[0].warnings + '</b>'; 
     directionsDisplay.setDirections(response); 
     showSteps(response, markerArray, stepDisplay, map); 
    } else { 
     window.alert('Directions request failed due to ' + status); 
    } 
    }); 
} 

function showSteps(directionResult, markerArray, stepDisplay, map) { 
    // For each step, place a marker, and add the text to the marker's infowindow. 
    // Also attach the marker to an array so we can keep track of it and remove it 
    // when calculating new routes. 
    var myRoute = directionResult.routes[0].legs[0]; 
    for (var i = 0; i < myRoute.steps.length; i++) { 
    var marker = markerArray[i] = markerArray[i] || new google.maps.Marker; 
    marker.setMap(map); 
    marker.setPosition(myRoute.steps[i].start_location); 
    attachInstructionText(stepDisplay, marker, myRoute.steps[i].instructions); 
    } 
} 

function attachInstructionText(stepDisplay, marker, text, map) { 
    google.maps.event.addListener(marker, 'click', function() { 
    // Open an info window when the marker is clicked on, containing the text 
    // of the step. 
    stepDisplay.setContent(text); 
    stepDisplay.open(map, marker); 
    }); 
} 

    </script> 
    <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY&signed_in=true&callback=initMap" 
     async defer></script> 
    </body> 
</html> 
+0

按照我的答案,並告訴我它是否不起作用 –

+0

您需要Google Maps JavaScript API v3的瀏覽器密鑰。 – geocodezip

回答

0

在你的腳本標籤,添加作爲查詢字符串的關鍵...

<script src="https://maps.googleapis.com/maps/api/js?key=PASTE_KEY_HERE&..." 
     async defer></script> 

例如,你的關鍵是12345,該腳本標籤應該是SRC值...

<script src="https://maps.googleapis.com/maps/api/js?key=12345&..." 
     async defer></script> 
+0

nope,does not working – Mohammed

+0

也只是一個快速更新,我配置了Apache httpd.conf來偵聽端口85.所以我通過使用12.34.56.78:85創建了服務器密鑰,嘗試了12.34.56.78換句話說我運行了它在我的web瀏覽器中作爲localhost:85。我做對了嗎,還是必須在設置密鑰時輸入我的實際IP? – Mohammed