首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

使用 Pitney Bowes 定位服务构建一个简单的图片定位应用程序

使用 Pitney Bowes 定位服务构建一个简单的图片定位应用程序

IBM Bluemix™ 提供了将您的伟大思想变成一个应用程序或服务所需的所有平台功能。Bluemix 还为您提供了对各种各样 API 的访问,通过将这些 API                与第三方提供的功能混合使用,您可以使用它们来增强您的应用程序。
提供了功能强大的 API                来实现地理编码、地址查询等功能。本文使用了一个简单而又有趣的示例应用程序,该应用程序在 Instagram                中将任意美国街道地址的经纬度与媒体搜索相结合,通过这个示例,我们将向您展示如何在您的 Bluemix 应用程序中使用 Pitney Bowes API。
入门的前提条件
  • 一个  帐户
  • 一个 (参见 ,以便获得有关的详细信息)
  • 一个
  • 适用于您的系统的 CloudFoundry
Pitney Bowes 定位服务快速指南使用 Bluemix 平台的开发人员可以使用的四项 Pitney Bowes 定位服务:
  • 地理编码:将地址转换成地址经纬度位置。
  • 反向地理编码:将一个经纬度位置(比如一个 GPS 信号)转换成一个可读地址。
  • 验证地址:正确的、标准化的、有效的地址,确保地址数据符合邮政管理局设立的质量标准,以便提高邮件和包裹的送达率。
  • 旅行边界服务:根据平均驾驶距离或平均驾驶时间来确定某个地址的边界,从而增加根据地理信息制定决策的信心。
步骤 1. 注册 Pitney Bowes 服务
  • 通过  在 Pitney Bowes 开发人员门户上获得一个开发人员帐户。当您完成电子邮件确认步骤时,您将获得一个具有 API                    特权的账号。
  • 登录并注册一个应用程序。返回的应用程序 ID 需要能够对 Pitney Bowes 进行 API 调用。(还提供了密钥,Pitney Bowes API                    目前不需要它。)
  • 默认情况下,您无权进行 API 调用。在 Entitlements 页面上,单击 Select                        Entitlement 并选择 free 级别(每天 2,000 个调用),这是自动认可的级别: 图 1.
现在,您已经为在 Bluemix 中使用应用程序 ID 和 Pitney Bowes services 服务做好了准备。
步骤 2. 在 Bluemix 中创建一个 Pitney Bowes 服务实例
  • 登录到 。
  • 在目录中,选择 Pitney Bowes 地理编码服务: 图 2.
  • 选择 Do not associate。(您将在步骤 3 中向应用程序添加服务实例。)为服务实例选择一个名称并输入您的                    Pitney Bowes 应用程序 ID。
步骤 3. 克隆 Node.js 寻像器应用程序代码从 IBM jStart DevOps 存储库克隆 Node 寻像器应用程序:
1
git clone https://hub.jazz.net/git/jstart/Picture.Finder.(Node)




所有应用程序逻辑都在 app.js 中,包括一些使得 Web 应用程序开发变得更容易的 Node 模块:
  • Express Web 开发框架
  • 针对 Express 的 Hogan 模板引擎
  • 用来调用 Pitney Bowes 的 REST 客户端
  • 一个 Instagram API 包装器库
  • 执行日期格式化的时间
  • 针对 JSON 操作的 pinch
“post to /location” 命令将会对 Pitney Bowes 地理编码服务执行一个 GET 调用。然后,返回的经纬度被传递给                Instagram(记得将代码中的 instagramID 和 instagramSecret 替换为那您自己的 Instagram                开发人员帐号和密钥),以便检索描述指定地址一公里范围以内的所有图片的 JSON。
请注意,在对地理编码服务的调用中,使用了从地理编码服务凭据中获得的 Pitney Bowes URL 和应用程序 ID。
1
var Client = rest.Client; client = new Client(); if (!address && !city && !state) res.render('index.html'); // direct way client.get(url + "?address=" + address + "&city=" + city + "&stateProvince=" + state + "&country=USA&fallbackToPostal=Y& fallbackToStreet=Y&fallbackToGeographic=Y& closeMatchesOnly=Y&appId =" + appId, function(data, response){ // data in callback contains the json returned from pitney bowes if (data.httpCode != "500") { lat = data.Output.Geometry.Pos.Y; lng = data.Output.Geometry.Pos.X; instagram.media.search({ lat: lat, lng: lng, complete: function(data){ // pinch converts all unix timestamps to a friendly date pinch(data, /created_time/, function(path, key, value) { return moment(value*1000).format("MMMM Do YYYY, h:mm a"); }); res.render('index.html', {data: data, address: address, city: city, state: state}); }, // end complete });// end search }// end httpCode check else { msg = "Can't find any pictures near this address"; res.render('index.html', {msg: msg, address: address, city: city, state: state}); } }); // end PB call




Hogan 模板语言和超净(ultra-clean)Mustache 模板语言将结果显示在 index.html 视图中。它们显示了从 Instagram 返回的                JSON 直接返回的结果(对创建时间进行了更改,利用服务器端的 pinch 库,将该时间从 UNIX 时间戳改为一个友好的日期格式):
1
<div> <ul> {{#data}} <li style="display: inline-block; padding: 25px"><a href="{{link}}"> <img src="{{#images}}{{#thumbnail}} {{url}} {{/thumbnail}}{{/images}}"></a> <br/> By: <em> {{#user}} {{username}} {{/user}}</em> <br/> {{created_time}} <br/> {{#comments}} {{count}} {{/comments}} comment(s) {{#likes}} {{count}} {{/likes}} likes. </li> {{/data}} </ul> </div>




步骤 4. 将应用程序推入 Bluemix
  • 转到应用程序的 app 目录。使用以下命令从命令行登录 Bluemix:                        
    1
    cf login -a api.ng.bluemix.net





                        提供您的用户名、密码和组织,并在系统提示您时按下空格键。
  • 一个 manifest.yml 文件包含在应用程序中,用于流线化该流程。它将设置应用程序名称、内存、实例数量和您在 步骤                        2 中创建的 Pitney Bowes 地理编码服务名称。 编辑 manifest.yml                        文件,以便更改那些对您的应用程序必须惟一的值。主机名必须是不同于 picturefinder 的名称,这样您获得的 URL 路由就不会与演示 URL                        (http://picturefinder.ng.bluemix.net)                        发生冲突。
    1
    --- applications: #Reference http://docs.cloudfoundry.com/doc ... -apps/manifest.html - name: PictureFinder #Application Name. Unique to the user's Space memory: 256M #The maximum memory to allocate to each application instance instances: 1 #The number of instances of the application to start host: my-unique-ehostname #Hostname for app routing. Unique to domain ng.bluemix.net. Change. path: . #Path to the application to be pushed command: node app.js #The command to use to start the application services: - Geocoding-demo #the already created geocode service




  • 从包含 app.js 和 manifest.yml 文件的 app 目录推入您的应用程序:                        
    1
    cf push




当应用程序运行时,转到 http://my-unique-hostname.ng.bluemix.net(其中的                    my-unique-hostname 是您在 manifest 文件中使用的主机名)。输入您的地址,并查看哪些 Instagram                用户正在您的附近发帖子。
结束语当在主要社交媒体平台上签入或使用位置共享特性时,全世界超过十二亿的人都在使用 Pitney Bowes                位置智能解决方案。通过精心定制用户对当前位置的体验,这些服务可帮助您,让您的应用程序更多地参与其中。
返回列表