我一直在做一个涉及谷歌地图API的项目。 基本上,每次程序运行时都会向谷歌地图API发送请求,这可能会在以后成为问题。 是否可以将所有这些信息存储在数据库中,然后,而不是向Google发出完全相同的请求,只是从数据库中提取它?
这是Javascript代码:
/********************************************************************/
function initMap()
{
/********************************************************************/
var routeTesting =
[
{lat: 15.5056524, lng: -88.0244702},
{lat: 15.5057297, lng: -88.0253025},
{lat: 15.5059322, lng: -88.0275617},
{lat: 15.5077225, lng: -88.0290227},
{lat: 15.5118536, lng: -88.0242649},
{lat: 15.5136369, lng: -88.0217633}
];
var routeTesting2 =
[
{lat: 15.5056524, lng: -88.0244702},
{lat: 15.5057297, lng: -88.0253025},
{lat: 15.5008444, lng: -88.0205006},
{lat: 15.4938188, lng: -88.0211481},
{lat: 15.4932665, lng: -88.0230147},
{lat: 15.5136369, lng: -88.0217633}
];
var c =
[
"#000000",
"#FF0011"
];
var testing = false;
var currentLocation = new google.maps.LatLng(routeTesting[1]);
var currentDestiny;
var currentLocationMarkers = [];
var currentLocationMarker;
var currentDestinyMarker;
var directionsService = new google.maps.DirectionsService();
var directionsRenderer = new google.maps.DirectionsRenderer({
polylineOptions: {
strokeColor: "#000"
}
});
var map;
var mapOptions =
{
center: currentLocation,
zoom: 18
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
routeCreate(routeTesting, c[0]); //displays testing route.
routeCreate(routeTesting2, c[1]); //displays second testing route.
/********************************************************************/
function routeCreate(r, c)
{
var orig = r[1];
var dest = r[1];
var waypoints = [];
for (var i = 1; i < r.length - 1; i++)
{
waypoints.push({location: r[i], stopover: false});
}
var request =
{
origin: orig,
waypoints: waypoints,
optimizeWaypoints: false,
destination: dest,
travelMode: 'DRIVING'
};
var directionsRenderer = new google.maps.DirectionsRenderer({
polylineOptions: {
strokeColor: c
}
});
directionsService.route(request, function(result, sstatus){
if(sstatus == google.maps.DirectionsStatus.OK)
{
directionsRenderer.setDirections(result);
}
else
{
alert("Error :'(");
}
});
directionsRenderer.setMap(map);
}
/********************************************************************/
function createMarker(coor)
{
var marker = new google.maps.LatLng(coor[0], coor[1]);
var testLoc1Marker = new google.maps.Marker({
position: marker,
map: map,
title: 'Test Marker'
});
}
/********************************************************************/
map.addListener('click', function(event)
{
addMarker(event.latLng);
});
/********************************************************************/
function addMarker(location)
{
var marker = new google.maps.Marker({
position: location,
map: map
});
currentLocationMarkers.push(marker);
if(currentLocationMarkers.length > 1)
{
for (var i = 0; i < currentLocationMarkers.length; i++)
{
currentLocationMarkers[i].setMap(null);
}
currentLocationMarkers = [];
addMarker(location);
}
else {
//checkClosestWaypoint();
}
}
/********************************************************************/
}
简短的回答是否定的,如果不是为了性能,你就不能
这是 10.5 的相关 c & d sub 的复制/粘贴
不得使用服务之外的内容。您不得在服务之外使用任何内容,除非第 (d( 款明确允许这样做。例如,您不会将内容导出或保存到第三方的平台或服务。
没有缓存或存储。您不会预取、缓存、索引或存储 在服务之外使用的任何内容,但您可以存储的内容除外 有限数量的内容仅用于改进 由于网络延迟而导致的地图 API 实现的性能 (而不是为了阻止谷歌准确跟踪 用法(,并且仅当此类存储:是临时的(并且在任何情况下都不会更多 超过30个日历日(;是安全的;不操作或聚合 内容或服务的任何部分;并且不会修改 中的归属 无论如何。
参见,10.5 c & d 的长答案 https://developers.google.com/maps/terms-20180207
您可以使用 php 文件创建另一个 Ajax 函数来将传递的数据保存到数据库中。例如,如果要在数据库中保存纬度和经度,只需使用以下代码将纬度和经度发送到savedata.php文件。
function save_data(latitude, longitude){
$.ajax({
type: "POST",
url: "savedata.php",
data: {'latitude':latitude, 'longitude':longitude},
cache: false,
success: function(data){
alert("Settings has been updated successfully.");
}
});
}
您需要在Google API代码部分中调用上述函数。
save_data(latitude, longitude);
通过传递纬度、经度值。
然后在 savedata.php 文件中,您可以将这些纬度、经度值作为 post 变量。因此,您可以轻松地将它们保存到数据库中。
保存数据.php
<?php
// You database connection settings herre
include('database_settings.php');
if(isset($_POST['latitude']) && isset($_POST['longitude'])){
// Write your insert query here
}
?>