Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将Google Places API返回的数据存储到数据库中?_Php_Html_Mysql_Google Maps_Google Places Api - Fatal编程技术网

Php 如何将Google Places API返回的数据存储到数据库中?

Php 如何将Google Places API返回的数据存储到数据库中?,php,html,mysql,google-maps,google-places-api,Php,Html,Mysql,Google Maps,Google Places Api,如何将Google Places API返回的数据存储到数据库中 这是HTML代码 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Creating a Custom jQuery Plugin</title> <link type="

如何将Google Places API返回的数据存储到数据库中

这是HTML代码

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Creating a Custom jQuery Plugin</title>
    <link type="text/css" rel="stylesheet" href="jquery.accordion.css" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript" src="jquery.accordion.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        $('dl#my-accordion').accordion({open:true});
    });
    </script>

    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false"></script>
    <script src="js/script.js"></script>
</head>

<body>
    <div id="container"></div>
    <div id="gmap_canvas"></div>
    <div class="actions">
        <div class="button">
            <label for="gmap_where">Where:</label>
            <input id="gmap_where" type="text" name="gmap_where" /></div>
        <div id="button2" class="button" onclick="findAddress(); return false;">Search for address</div>
        <form action="save.php" method="post">
            <div class="button">
                <label for="gmap_keyword">Keyword (optional):</label>
                <input id="gmap_keyword" type="text" name="gmap_keyword" /></div>
            <div class="button">
                <label for="gmap_type">Type:</label>
                <select id="gmap_type">
                    <option value="art_gallery">art_gallery</option>
                    <option value="atm">atm</option>
                    <option value="bank">bank</option>
                    <option value="bar">bar</option>
                    <option value="cafe">cafe</option>
                    <option value="food">food</option>
                    <option value="hospital">hospital</option>
                    <option value="police">police</option>
                    <option value="store">store</option>
                </select>
            </div>
            <div class="button">
                <label for="gmap_radius">Radius:</label>
                <select id="gmap_radius">
                    <option value="500">500</option>
                    <option value="1000">1000</option>
                    <option value="1500">1500</option>
                    <option value="5000">5000</option>
                </select>
            </div>
            <input type="hidden" id="lat" name="lat" value="40.7143528" />
            <input type="hidden" id="lng" name="lng" value="-74.0059731" />
            <div onclick="findplaces(); return false;"><input type="submit" value="Search for objects"class="button" id="button1" /></div>
        </form>
    </div>

</body>
</html>

创建自定义jQuery插件
$(文档).ready(函数(){
$('dl#我的手风琴')。手风琴({open:true});
});
哪里:
搜索地址
关键字(可选):
类型:
美术馆
自动取款机
银行
酒吧
咖啡馆
食物
医院
警方
商店
半径:
500
1000
1500
5000
这是剧本

var geocoder;
var map;
var markers = Array();
var infos = Array();

function initialize() {
    // prepare Geocoder
    geocoder = new google.maps.Geocoder();

    // set initial position (New York)
    var myLatlng = new google.maps.LatLng(40.7143528,-74.0059731);

    var myOptions = { // default map options
        zoom: 14,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById('gmap_canvas'), myOptions);
}

// clear overlays function
function clearOverlays() {
    if (markers) {
        for (i in markers) {
            markers[i].setMap(null);
        }
        markers = [];
        infos = [];
    }
}

// clear infos function
function clearInfos() {
    if (infos) {
        for (i in infos) {
            if (infos[i].getMap()) {
                infos[i].close();
            }
        }
    }
}

// find address function
function findAddress() {
    var address = document.getElementById("gmap_where").value;

    // script uses our 'geocoder' in order to find location by address name
    geocoder.geocode( { 'address': address}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) { // and, if everything is ok

            // we will center map
            var addrLocation = results[0].geometry.location;
            map.setCenter(addrLocation);

            // store current coordinates into hidden variables
            document.getElementById('lat').value = results[0].geometry.location.lat();
            document.getElementById('lng').value = results[0].geometry.location.lng();

            // and then - add new custom marker
            var addrMarker = new google.maps.Marker({
                position: addrLocation,
                map: map,
                title: results[0].formatted_address,
                icon: 'marker.png'
            });
        } else {
            alert('Geocode was not successful for the following reason: ' + status);
        }
    });
}

// find custom places function
function findPlaces() {

    // prepare variables (filter)
    var type = document.getElementById('gmap_type').value;
    var radius = document.getElementById('gmap_radius').value;
    var keyword = document.getElementById('gmap_keyword').value;

    var lat = document.getElementById('lat').value;
    var lng = document.getElementById('lng').value;
    var cur_location = new google.maps.LatLng(lat, lng);

    // prepare request to Places
    var request = {
        location: cur_location,
        radius: radius,
        types: [type]
    };
    if (keyword) {
        request.keyword = [keyword];
    }

    // send request
    service = new google.maps.places.PlacesService(map);
    service.search(request, createMarkers);
}

// create markers (from 'findPlaces' function)
function createMarkers(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {

        // if we have found something - clear map (overlays)
        clearOverlays();

        // and create new markers by search result
        for (var i = 0; i < results.length; i++) {
            createMarker(results[i]);
        }
    } else if (status == google.maps.places.PlacesServiceStatus.ZERO_RESULTS) {
        alert('Sorry, nothing is found');
    }
}

// creare single marker function
function createMarker(obj) {

    // prepare new Marker object
    var mark = new google.maps.Marker({
        position: obj.geometry.location,
        map: map,
        title: obj.name
    });
    markers.push(mark);

    // prepare info window
    var infowindow = new google.maps.InfoWindow({
        content: '<img src="' + obj.icon + '" /><font style="color:#000;">' + obj.name +
        '<br />Rating: ' + obj.rating + '<br />Vicinity: ' + obj.vicinity + '</font>'
    });

    // add event handler to current marker
    google.maps.event.addListener(mark, 'click', function() {
        clearInfos();
        infowindow.open(map,mark);
    });
    infos.push(infowindow);
}

// initialization
google.maps.event.addDomListener(window, 'load', initialize);
var地理编码器;
var映射;
var markers=Array();
var infos=Array();
函数初始化(){
//准备地理编码器
geocoder=新的google.maps.geocoder();
//设置初始位置(纽约)
var mylatng=new google.maps.LatLng(40.7143528,-74.0059731);
var myOptions={//默认映射选项
缩放:14,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById('gmap_canvas'),myOptions);
}
//清除覆盖功能
函数clearOverlays(){
如果(标记){
用于(标记中的i){
标记[i].setMap(空);
}
标记=[];
infos=[];
}
}
//清除信息功能
函数clearInfos(){
如果(信息){
对于(我在infos中){
if(infos[i].getMap()){
infos[i].close();
}
}
}
}
//查找地址函数
函数findAddress(){
var address=document.getElementById(“gmap_where”).value;
//该脚本使用我们的“地理编码器”通过地址名查找位置
geocoder.geocode({'address':address},函数(结果,状态){
如果(status==google.maps.GeocoderStatus.OK){//,如果一切正常
//我们将以地图为中心
var addrLocation=results[0]。geometry.location;
地图设置中心(地址位置);
//将当前坐标存储到隐藏变量中
document.getElementById('lat')。value=results[0]。geometry.location.lat();
document.getElementById('lng')。value=results[0]。geometry.location.lng();
//然后-添加新的自定义标记
var addrMarker=new google.maps.Marker({
位置:addrLocation,
地图:地图,
标题:结果[0]。格式化的\u地址,
图标:“marker.png”
});
}否则{
警报('地理编码因以下原因未成功:'+状态);
}
});
}
//查找自定义位置功能
函数findPlaces(){
//准备变量(过滤器)
var type=document.getElementById('gmap_type')。值;
var radius=document.getElementById('gmap_radius')。值;
var关键字=document.getElementById('gmap_关键字')。值;
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng')。值;
var cur_location=新的google.maps.LatLng(lat,lng);
//准备对地点的请求
var请求={
位置:cur_位置,
半径:半径,
类型:[类型]
};
如果(关键字){
request.keyword=[keyword];
}
//发送请求
服务=新的google.maps.places.PlacesService(地图);
服务搜索(请求、创建标记);
}
//创建标记(从“findPlaces”功能)
函数createMarkers(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
//如果我们发现了什么-清晰的地图(覆盖图)
clearOverlays();
//并根据搜索结果创建新标记
对于(var i=0;i评级:”+obj.Rating+”
邻近地区:“+obj.Rating+” }); //将事件处理程序添加到当前标记 google.maps.event.addListener(标记'click',function(){ clearInfos(); 信息窗口。打开(地图、标记); }); 推送(infowindow); } //初始化 google.maps.event.addDomListener(窗口“加载”,初始化);

我只是需要一个关于如何将GooglePlacesAPI返回的数据转储到数据库中的想法。谢谢

您应该将从google map API获得的结果发布到您自己的服务器上,可能使用您自己的API,并将其存储在您的服务器上。

虽然可能,但不建议这样做

正如昆廷所评论的那样,低安全性环境不是web编程

因此,最好的方法是使用(通过API)

  • 似乎需要将lat/lon存储到数据库中(如果需要) 由Google API返回的lat/lon)
  • 然后从中创建JSON对象

  • 接下来了解, 它将向服务器发送数据,并从服务器检索数据 异步(在后台)而不干扰 现有页面的显示和行为

希望您能理解。

对不起。我对古是个新手