注:本博文为博主原创,转载请注明出处。

    在上一篇博文中主要讲述了如何利用AngularJs+Node+MySql构建项目,并实现地图上的多点标注,今天在这篇文章中,我们将在上一个项目的基础上,实现特定点的定位以及附加信息的展示。这样我们的项目就更加完善了,从宏观上看到每个点,从微观上分析每个点的不同。这种方法往往在大数据可视化方面很有效果。

    Angularjs+node+Mysql实现地图上的多点标注原文地址:http://www.cnblogs.com/DonaHero/p/5815595.html(注:本文是在这篇博文的基础上进行增加功能的,还请各位能仔细搭建自己的环境,搭建环境与运行,这里将不再赘述。)

    项目源码地址:https://github.com/zhangxy1035/Gould    (项目中的源码已经更新)

    一、项目演示

    我们经常在自己的业务中,需要搜索某一点,然后让其在地图中进行显示,显示时也必须带上自己的附加信息。项目运行结果图如下:

    当点击搜索按钮之后,结果如图

    定位到了特定的点,并且还打印出了该点所携带的附加信息。

    二、项目搭建

    首先来说一下我们的数据集,在数据集中我们有两张表,一张表为new_3,另一张表为sample表,其中所带的字段如下:

     new_3中的字段为前三个,sample表中的字段为后面几个。接下来我们将要实现的功能就是通过前台输入Order_id,后台进行接收,执行查询,并把返回的数据显示到前台。

    position.js文件代码:

 exports.getAllMarker4 = function(req,res) {
var order_id = req.body.order_id;
console.log('获取所有标记点服务器端');
console.log(req.body); var con = connection.query("SELECT * FROM new_3 n3 ,sample s WHERE s.addr=n3.shop_id AND order_id='"+order_id+"'",function(err,result,fields){
if(err){
throw err;
}
var new_3 = [];
result.forEach(function (item) {
var new_1item = {
order_id:item.Order_id,
shop_id:item.shop_id,
courier_id: item.Courier_id,
addr: item.Addr,
arrival_time: item.arrival_time,
departure:item.departure,
amount:item.amount,
lng:item.lng,
lat:item.lat };
new_3.push(new_1item);
});
console.log(new_3);
res.send({retCode:1,data:new_3});
}) };

    其中需要说明的一点:order_id需要前台进行接收,所以需要这样书写:var order_id = req.body.order_id;

    start.js,由于在上一篇中我们已经将项目构建完成,现在我们只需要在start.js文件中增加这样一句代码即可:

 app.post('/getAllMarker4',position.getAllMarker4);

    controller.js

     .controller('new4Ctrl',function($scope,Position){
var map = new AMap.Map('container',{
resizeEnable: true,
zoom: 10,
center: [121.48,31.22]//定位到上海
});
AMap.plugin('AMap.ToolBar',function(){
var toolbar = new AMap.ToolBar();
map.addControl(toolbar)
})
var order_id=$scope.order_id;
//自定义搜索
$scope.mapSearch = function () {
//自定义搜索
if ($scope.order_id) {
Position.getAllMarker4({order_id: $scope.order_id}, function (data) {
var infoWindow = new AMap.InfoWindow({offset: new AMap.Pixel(0, -30)});
console.log(data.data[0]);
order_id = data.data[0].order_id;
var shop_id = data.data[0].shop_id;
var lng = data.data[0].lng;
var lat = data.data[0].lat;
var courier_id = data.data[0].courier_id;
var amount = data.data[0].amount;
var time = data.data[0].arrival_time + data.data[0].departure;
var marker = new AMap.Marker({
position: [lng, lat],
map: map
});
marker.content = 'Courier' +' '+ (courier_id) +' '+ 'In outlets' +' '+ (shop_id) +' '+ 'spend' +' '+ (time) +' '+ 'Minutes, take pieces' +' '+ (amount) +' '+'Order number:' +' '+ (data.data[0].order_id);
marker.on('click', markerClick);
marker.emit('click', {target: marker}); function markerClick(e) {
infoWindow.setContent(e.target.content);
infoWindow.open(map, e.target.getPosition());
} map.setFitView(); });
} else {
alert("请输入正确订单号!");
}
} })

    service.js

         var getAllMarker4 = function (query,success) {
$http.post(CONFIG.host + '/getAllMarker4',query)
.success(function(data){
success(data);
});
};

    html

 <div  class="container" ng-app="PCMapInput" ng-controller="new4Ctrl">
<div class="container-fluid">
<div class="row-fluid">
<div class="span6">
<div id="container" tabindex="0" style=" width: 800px; height:500px"></div>
</div>
<div class="span6">
<div style=" width: 100px; height:50px"></div>
<div class="bar bar-header item-input-inset">
<label class="item-input-wrapper">
<i class="icon ion-ios-search placeholder-icon"></i>
<input type="text" ng-model="order_id" placeholder="订单查询" style="width: 150px">
</label>
<button class="button button-balanced" ng-click="mapSearch()">搜索</button>
</div>
</div>
</div>
</div>
</div>

   在上述代码中使用了ng-model双向绑定,然后点击button进行触发,但凡前台后台数据传输,亦或者是获取数据,用这种方法都是简单易于实现的。还有不要忘记在自己的页面中加入从高德地图上获取到的开发者key值。这样一个搜索的功能就实现了。通过对于本文的学习,希望你能实现node架构前后台的交互传值,快去动手试试吧。

    注:本文亦包括上一篇的博文中所用到的数据集,均来自于天池大数据平台,在此博主深表谢意。

Angularjs+node+Mysql实现地图上特定点的定位以及附加信息展示的更多相关文章

  1. Angularjs+node+Mysql实现地图上的多点标注

    注:本文适合对于node有一定基础的人,如果您是小白,请先用1个小时学习node.node文档https://nodejs.org/en/docs/ 该片博文的源码地址:https://github. ...

  2. ol3对地图上某些特定的经纬度进行标注

    最终效果需要类似于这种 1.首先我们需要一个最基本的地图,这一步骤可以浏览该分类下的上一篇随笔. 2.ol3支持的文件格式有.geojson,我们需要将坐标制作成符合这种格式的样子才能被ol3识别并显 ...

  3. 基于 Angularjs&Node.js 云编辑器架构设计及开发实践

    基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...

  4. 如何在iOS地图上高效的显示大量数据

    2016-01-13 / 23:02:13 刚才在微信上看到这篇由cocoachina翻译小组成员翻译的文章,觉得还是挺值得参考的,因此转载至此,原文请移步:http://robots.thought ...

  5. AngularJS + Node.js + MongoDB开发

    AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...

  6. [ios3-地图] 如何在iOS地图上高效的显示大量数据 [转]

    [转至:http://blog.csdn.net/pjk1129/article/details/17358337] 原文:How To Efficiently Display Large Amoun ...

  7. node+mysql,实现基本的增删改查,附带跟踪记录和运行时间记录

    Node + mysql 实现基础的增删改查,以及性能测试. 网上有很多这样的例子,我也是找来学习的. 感觉node对mysql的操作非常简单,也很实用,比如自带防止sql注入的功能,一开始还担心注入 ...

  8. node与mysql的相互使用————node+mysql

    node与mysql的相互使用----node+mysql 为什么选node???因为我是个前端. 为什么选mysql???因为成熟,稳定,听说容易学. 一.mysql数据库: mysql下载和使用我 ...

  9. 记录开发基于百度地图API实现在地图上绘制轨迹并拾取轨迹对应经纬度的工具说明

    前言: 最近一直在做数据可视化方面的工作,其中平面可视化没什么难度,毕竟已经有很多成熟的可供使用的框架,比如百度的echart.js,highcharts.js等.还有就是3D可视化了,整体来说难度也 ...

随机推荐

  1. 好神奇的代码,可以让匿名用户对特定SharePoint 列表拥用添加列表项的权限哦

    如果你不使用代码,很难从界面上去设置列表的匿名用户(如果可以请告诉我,我会自动删除这个博文)拥有列表项的添加权限. 其实这种需求是非常必要的,比如: 1.允许新用户去提交一个注册申请, 2.在召集临时 ...

  2. SharePoint 2013 User Profile Services之跨场设置

    这段时间有个客户需要在不同SharePoint场中使用网站.文档和用户关注功能.但实际使用中发现默认的关注功能不能跨场使用,这也引出了我接下来的博客,我将在博客中详细描述整个过程. 因为“关注”功能是 ...

  3. Linux0.11内核--加载可执行二进制文件之3.exec

    最后剩下最核心的函数do_execve了,由于这里为了简单起见我不分析shell命令的情况, /* * 'do_execve()'函数执行一个新程序. */ //// execve()系统中断调用函数 ...

  4. # iOS 10 适配 # 适配刷新控件 以MJRefresh 为例

    在iOS10中ScrollView 添加了一个refreshControl的东西 - - 不知道水果公司做了什么  导致原有的刷新控件类刷新后frame.y 向下偏移了20 起初以为是水果调整了sta ...

  5. iOS 系统分析(一) 阅读内核准备知识

    ➠更多技术干货请戳:听云博客 0x01 iOS体系架构 1.1 iOS 系统的整体体系架构 用户体验( The User Experience layer ):SpringBoard 同时支持 Spo ...

  6. web.xml中监听器配置

    <!-- 监听器的配置:监听器配置完以后,应用系统在启动的时候就会开启这些监听器. 监听器的理解:监听器好比一个卫兵,卫兵一直站在那里等待长官的命令,当卫兵收到长官的命令以后,立即执行 之前已经 ...

  7. angularJs自定义服务(实现签名和加密)

    写在前面: angularJS是google公司主推的js开发优秀框架... 页面展示: 在应用中进行加密是普遍存在的,个人建议在前端实现加密签名(前端加密是否必要来自知乎:http://www.zh ...

  8. oracle查看对象信息

    1.查看某用户下所有对象的信息: SELECT owner, object_type, status, COUNT(*) count# FROM all_objects where owner='xx ...

  9. JavaScript数字精度丢失问题总结

    本文分为三个部分 JS 数字精度丢失的一些典型问题 JS 数字精度丢失的原因 解决方案(一个对象+一个函数) 一.JS数字精度丢失的一些典型问题 1. 两个简单的浮点数相加 0.1 + 0.2 != ...

  10. Mac安装Windows 10的简明教程

    每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...