【问题标题】:Is it possible to store Google Maps api data into data base是否可以将 Google Maps api 数据存储到数据库中
【发布时间】:2018-08-24 02:58:24
【问题描述】:

我一直在从事一个涉及 google maps api 的项目。 基本上,每次程序运行时都会向 google maps 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();
    }
  }
  /********************************************************************/
}

【问题讨论】:

    标签: javascript php mysql google-maps


    【解决方案1】:

    简短的回答是不,如果不是为了性能,你不能

    这里是 10.5 的相关 c & d sub 的复制/粘贴

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

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

    请参阅 10.5 c & d 以获得详细答案 https://developers.google.com/maps/terms-20180207

    【讨论】:

    • “除了您可以存储有限数量的内容仅用于提高 Maps API 实施的性能”...这肯定正是 OP 想要的
    • 你是对的,我编辑了我的答案以突出表现有效的原因
    • 一切都好,看起来我认为存在相当严格的规则,而不是我已经处理过这个特定的 API。
    • 否则您可以使用 Open Street Map [Nominatim] Server 拥有自己的地图数据。您可以在您自己的服务器的环境中设置它。 openstreetmap.org。更多信息请阅读 Nominatim - OpenStreetMap Wiki wiki.openstreetmap.org/wiki/Nominatim
    【解决方案2】:

    您可以创建另一个 Ajax 函数来使用 php 文件将传递的数据保存到数据库中。例如,如果你想在数据库中保存经纬度,只需使用下面的代码将经纬度发送到 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
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 2021-06-10
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多