我是google map api中的新手。我正在尝试实施谷歌地图地理编码api Geocoding API on Google Developers
exports.FindByKeyWord = function (req, res, next) {
var API_KEY = "SOMEDATA";
var BASE_URL = "https://maps.googleapis.com/maps/api/geocode/json?address=";
var address = "1600 Amphitheatre Parkway, Mountain View, CA";
var url = BASE_URL + address + "&key=" + API_KEY;
var map = new google.maps.Map();
var geocoder = new google.maps.Geocoder();
geocoder.geocode(url, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
res.json(marker);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
};
我想响应json格式,但是我的函数抛出错误
google未定义
有人可以帮忙吗?
答案 0 :(得分:6)
我认为您在Geocoding REST API和客户端JavaScript API之间感到困惑。您在此处使用后者,但这些设计是在浏览器中运行,而不是在服务器上运行,因此您可能会收到错误。
在这种情况下,使用REST API非常简单 - 您只需向您已在示例代码中创建的URL发出HTTP请求,然后将结果传递到您的服务器&#39的回应我建议您使用Request或SuperAgent这样的库来简化此操作。
这是一个(未经测试的)示例,使用请求:
// npm install request --save
var request = require("request");
exports.FindByKeyWord = function (req, res, next) {
var API_KEY = "SOMEDATA";
var BASE_URL = "https://maps.googleapis.com/maps/api/geocode/json?address=";
var address = "1600 Amphitheatre Parkway, Mountain View, CA";
var url = BASE_URL + address + "&key=" + API_KEY;
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.json(body);
}
else {
// The request failed, handle it
}
});
};
实际上,您的服务器充当您的用户和Google API之间的中间人 - 这可以非常方便,因为这意味着您可以在发送请求之前修改请求以进行地理编码,并允许您执行缓存之类的操作结果(您每天只能在REST API上获得2,500个免费请求,因此如果您需要非常重要的流量,这非常重要!)。