10

我对我想到的一个项目进行了一些测试,该项目涉及使用附近的地方。所以我和那个大家伙一起去玩弄谷歌的 Places Api。我正在为我的地图使用带有 openstreet 瓷砖的传单。现在一切都很好,直到我尝试使用该死的东西。

var lat = coords.lat;
var lng = coords.lng;
var apiUrl = "https://maps.googleapis.com/maps/api/place/nearbysearch/json";
var data = {
    key: 'AIzaSyBl8bmE8kQT7RjoXhP6k2yDti44h9-fSUI',
    location: lat+','+lng,
    radius: '10000',
    sensor: 'false',
    rankby: 'prominence',
    types: 'bar|night_club'
};
$.ajax({
  url: apiUrl,
  type: 'POST',
  data: data,    
  dataType:"jsonp",
  crossDomain: true,
  success: function(data) {
            var obj = $.parseJSON(data);
                // console.log(data.next_page_token);
          }
});

dataType将属性更改为json我得到Origin http://localhost is not allowed by Access-Control-Allow-Origin.使用 jsonp 我得到一个解析错误Unexpected token :显然$.parseJSON不起作用...有没有办法使这项工作无需使用 Google Maps Api?如果答案是否定的……还有其他地方的 api 和 google 的一样好吗?

谢谢!

4

2 回答 2

17

您正在尝试使用Places API Web 服务,该服务旨在用于服务器代码,并且不支持 JavaScript 所需的 JSONP 输出。

在 JavaScript 中,您需要使用Maps API V3中的Places Library。您不能直接从 JavaScript 或 jQuery 代码中点击 URL。(您可能会发现 Places Library 使用的 URL 模式,但服务条款不允许在不通过 API/Library 的情况下直接使用,并且 URL 可能随时更改。)

您是否有不想通过 JavaScript 使用 Maps API 的原因?

于 2013-04-06T06:15:43.393 回答
0

https://github.com/joshtronic/php-googleplaces

刚做了这个并将其上传到我的一个网站。

<?php
include 'GooglePlaces.php';
include 'GooglePlacesClient.php';
$google_places = new joshtronic\GooglePlaces('your_key');
$google_places->location = array(<your_lat>, <your_lon>);
$google_places->radius   = 800;
$results                 = $google_places->nearbySearch();
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *'); 
echo json_encode($results);
于 2017-07-20T19:50:48.167 回答