如何使用nodejs/javascript实现地理编码响应

How to implement geocoding responses using nodejs/javascript?

本文关键字:编码 响应 实现 javascript 何使用 nodejs      更新时间:2023-09-26

我是谷歌地图api的新手。我正在尝试实现谷歌地图地理编码api
谷歌开发者上的地理编码API

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格式,但是我的函数抛出了一个错误

谷歌没有定义

有人能帮忙吗?

我认为您混淆了地理编码REST API和客户端JavaScript API。您在这里使用的是后者,但它是在浏览器中运行的,而不是在服务器上运行的,因此您会出现错误。

在这种情况下,使用RESTneneneba API非常简单——您所要做的就是对示例代码中已经创建的URL发出HTTP请求,然后将结果传递给服务器的响应。我建议使用像Request或SuperAgent这样的库来简化这一过程。

下面是一个(未经测试的)示例,使用Request:

// 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上,您每天只能获得2500个免费请求,因此如果您希望获得非微不足道的流量,这一点非常重要!)。