【问题标题】:Is Google api limit based on ip or page ? client side scripting avoid limit crossing?Google api 限制是基于 ip 还是 page ?客户端脚本避免越界?
【发布时间】:2015-05-05 11:50:32
【问题描述】:

在我的服务器中,我正在使用一些函数来找出从谷歌地图 api 服务中获取和删除的纬度和纬度,方向,所以有些天会超过限制,所以我想使用用户端脚本来计算所有谷歌 api 服务使用以下代码对我有帮助吗?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body onload="geolocate1()">
    <input type="text" id="pickup"  onFocus="geolocate()" placeholder="Enter your pick up place" />
	<input type="text" id="plat" value=""  id="plat"/>
	<input type="text" id="plang" value="" id="plang"/>
	<input type="text" id="pstatuslat" value="error" />
	<input type="text" id="km"  />
 </br>
    
	 </br>
    <input type="text" id="drop" onFocus="geolocate1()" placeholder="Enter your Drop off place"/>
	<input type="text" id="dlat" value=""  id="plat"/>
	<input type="text" id="dlang" value="" id="plang"/>
	<input type="text" id="dstatuslat" value="error" />

    <div id="directions_panel" style="margin:20px;background-color:#FFEE77;"></div>
		<input type="button" onclick="GetLocation1();GetLocation();calcRoute();" value="Book Now" />
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;libraries=places"></script>

    <script type="text/javascript">
    <!--
        function GetLocation() {
            var geocoder = new google.maps.Geocoder();
            var address = document.getElementById("pickup").value;
            geocoder.geocode({ 'address': address }, function (results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    var latitude = results[0].geometry.location.lat();
                    var longitude = results[0].geometry.location.lng();
                    document.getElementById('plang').value= longitude; 
                    document.getElementById('plat').value= latitude; 
                    document.getElementById('pstatuslat').value= "ok"; 
                } else {
                      document.getElementById('pstatuslat').value= "error"; 
                }
            });
        };
		
		 function GetLocation1() {
            var geocoder = new google.maps.Geocoder();
            var address = document.getElementById("drop").value;
            geocoder.geocode({ 'address': address }, function (results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    var latitude = results[0].geometry.location.lat();
                    var longitude = results[0].geometry.location.lng();
                    document.getElementById('dlang').value= longitude; 
                    document.getElementById('dlat').value= latitude; 
                    document.getElementById('dstatuslat').value= "ok"; 
                } else {
                      document.getElementById('dstatuslat').value= "error"; 
                }
            });
        };
        //-->

// This example displays an address form, using the autocomplete feature
// of the Google Places API to help users fill in the information.

var autocomplete;

function geolocate1() {

// Create the autocomplete object, restricting the search
var input = document.getElementById('pickup');
var options = {types: ["geocode"],componentRestrictions: {country: 'uk'}};

autocomplete = new google.maps.places.Autocomplete(input, options);
// When the user selects an address from the dropdown,
// populate the address fields in the form.
google.maps.event.addListener(autocomplete, 'place_changed', function() {
fillInAddress();
});
}
function geolocate() {
// Create the autocomplete object, restricting the search
// to geographical location types.
var input = document.getElementById('drop');
var options = {types: ["geocode"],componentRestrictions: {country: 'uk'}};

autocomplete = new google.maps.places.Autocomplete(input, options);
// When the user selects an address from the dropdown,
// populate the address fields in the form.
google.maps.event.addListener(autocomplete, 'place_changed', function() {
fillInAddress();
});
}

var directionsService = new google.maps.DirectionsService();
function calcRoute() {
  var start = document.getElementById('pickup').value;
  var end = document.getElementById('drop').value;

  var request = {
      origin: start,
      destination: end,
      travelMode: google.maps.TravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      var route = response.routes[0];
		  var km = parseFloat(route.legs[0].distance.text.replace(" km", ""));

		  document.getElementById('km').value =  km * 0.6214;
      }
    
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

</script>    
</body>
</html>

【问题讨论】:

    标签: javascript google-maps google-maps-api-3


    【解决方案1】:

    Google API 受限于您使用的密钥。没关系,如果你的IP相同或不同,每次使用你注册的Key对Google API的调用都会被计算在内。

    F.e.使用 Google Elevation API 限制为每天 2500 次调用,不管是谁调用这个,它仅限于你的 API Key。

    【讨论】:

    • api 密钥没问题我会得到但如果没有服务很好?
    猜你喜欢
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多