首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >输入zipcode,显示一定半径内的用户

输入zipcode,显示一定半径内的用户
EN

Stack Overflow用户
提问于 2017-06-22 10:51:31
回答 1查看 520关注 0票数 1

我有一个Meteor应用程序,产品供应商在注册时输入他们的邮政编码。此数据存储在users.profile.zipcode中。

流程: 1.任何访问该网站的人都可以在搜索字段中输入邮政编码。2.显示邮政编码在该邮政编码10公里内的产品提供商列表。

这款应用程序最初将面向挪威用户,但未来可能会扩展到不同的国家。

有没有人能给我提供一些示例代码,告诉我如何使用Google API或类似的工具来实现这一点?我是JavaScript的新手,所以如果能有一个完整的例子我将非常感激。希望使用Meteor.Publish和Meteor.Subscribe,包括数据的显示。

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2017-06-22 13:20:47

首先你需要将邮政编码转换成坐标,这里有一个zipcodes lib --只针对美国和加拿大,如果你的目标是其他地区/国家的lib,可以很容易地在NPM上找到。

例如,我们有一个Meteor方法,它接受带有zipcode字段的表单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import zipcodes from 'zipcodes';

// Create `2dsphere` index
const collection = new Mongo.Collection('someCollectionName');
collection._ensureIndex({zipLoc: '2dsphere'});

Meteor.Methods({
  formSubmit(data) {
    const zipData = zipcodes.lookup(data.zipcode);
    // Save location as geospatial data:
    collection.insert({
      zipLoc: {
        type: "Point",
        coordinates: [zipData.longitude, zipData.latitude]
      }
    });
  }
});

要在radius内搜索,请使用下一个代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const searchRadius = 10000; // 10km in meters
const zip = 90210;
const zipData = zipcodes.lookup(zip);

collection.find({
  zipLoc: {
    $near: {
      $geometry: [zipData.longitude, zipData.latitude],
      $maxDistance: searchRadius
    }
  }
});

进一步阅读:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44697282

复制
相关文章

相似问题

postgresql使用对象数组查询json列

21

使用array.contains()查询postgresql数组列

199

postgreSQL查询jsonb列中的空数组字段

11

postgresql json数组查询

11

PostgreSql查询数组值

16
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文