Javascript 是否可以将谷歌地图api数据存储到数据库中

Javascript 是否可以将谷歌地图api数据存储到数据库中,javascript,php,mysql,google-maps,Javascript,Php,Mysql,Google Maps,我一直在从事一个涉及谷歌地图api的项目。 基本上,每次程序运行时都会向GoogleMapsAPI发送请求,这以后可能会成为一个问题。 是否有可能将所有这些信息存储在数据库中,然后,不向谷歌发出完全相同的请求,只从数据库中提取这些信息 这是Javascript代码: /********************************************************************/ function initMap() { /*********************

我一直在从事一个涉及谷歌地图api的项目。 基本上,每次程序运行时都会向GoogleMapsAPI发送请求,这以后可能会成为一个问题。 是否有可能将所有这些信息存储在数据库中,然后,不向谷歌发出完全相同的请求,只从数据库中提取这些信息

这是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();
    }
  }
  /********************************************************************/
}
/********************************************************************/
函数initMap()
{
/********************************************************************/
无功路由测试=
[
{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},
{拉丁美洲:15.5136369,液化天然气:-88.0217633}
];
var路由测试2=
[
{lat:15.5056524,lng:-88.0244702},
{lat:15.5057297,lng:-88.0253025},
{lat:15.5008444,lng:-88.020506},
{lat:15.4938188,lng:-88.0211481},
{lat:15.4932665,lng:-88.0230147},
{拉丁美洲:15.5136369,液化天然气:-88.0217633}
];
变量c=
[
"#000000",
“#FF0011”
];
var测试=错误;
var currentLocation=new google.maps.LatLng(RouteTest[1]);
命运;
var currentLocationMarkers=[];
无功电流定位标记;
var-currentDestinyMarker;
var directionsService=new google.maps.directionsService();
var directionsrender=new google.maps.directionsrender({
多段线选项:{
strokeColor:#000”
}
});
var映射;
var映射选项=
{
中心:当前位置,
缩放:18
};
map=new google.maps.map(document.getElementById('map'),mapOptions);
routeCreate(RouteTest,c[0]);//显示测试路由。
routeCreate(routeTesting2,c[1]);//显示第二条测试路径。
/********************************************************************/
函数routeCreate(r,c)
{
var orig=r[1];
var dest=r[1];
var航路点=[];
对于(变量i=1;i1)
{
对于(变量i=0;i
简短的回答是否定的,如果不是为了性能,就不能

这是10.5中相关c&d子部分的副本/粘贴

不得使用服务外的内容。除非(d)小节明确允许,否则您不得使用服务外的任何内容。例如,您不得将内容导出或保存到第三方的平台或服务

没有缓存或存储。您不会预取、缓存、索引或存储 在服务之外使用的任何内容,但您可以存储的内容除外 内容数量有限,仅用于改进 由于网络延迟,您的Maps API实现的性能 (并不是为了阻止谷歌准确跟踪 使用),并且仅当此类存储是临时的(并且在任何情况下都不会超过 超过30个日历日);安全;不操纵或聚合 内容或服务的任何部分;并且不修改中的属性 无论如何

有关详细答案,请参见第10.5节c&d

您可以使用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.");
        }
    });
}
您需要在GoogleAPI代码部分中调用上述函数

save_data(latitude, longitude);
通过传递纬度、经度值

然后在savedata.php文件中,您可以将这些纬度、经度值作为post变量,这样您就可以轻松地将它们保存到数据库中

savedata.php

<?php
// You database connection settings herre
include('database_settings.php');

if(isset($_POST['latitude']) && isset($_POST['longitude'])){
    // Write your insert query here
}
?>


“除非您可能仅为了提高Maps API实现的性能而存储有限数量的内容”…这肯定正是OP想要的。你是对的,我编辑我的答案是为了强调性能有效的理由一切都很好,看起来像是我想不到存在的非常严格的规则,不是我处理过这个特定的API。否则,你可以使用Open Street map[提名]拥有自己的地图数据服务器。您可以在自己的服务器中的环境中设置它。有关更多信息,请阅读Namingm-OpenStreetMap Wiki,网址为