系统公告 - [易索论坛 Powered by ISSO]
论坛数据库例行维护,感谢大家的支持,稍后会恢复正常访问。怎么在百度地图上标注店名 百度地图标注方法
作者:佚名
字体:[ ] 来源:互联网 时间:10-22 08:30:17
怎么在百度地图上标注店名?下面小编就来教一下大家百度地图标注方法,有兴趣的朋友一起来学习吧
有时候我们需要在百度地图上寻找相关店名才能确认准确方位,但是没有怎么办?其实可以自己提交标注店名的这样还能造福其他,怎么在百度地图上标注店名?下面小编就来教一下大家百度地图标注方法。
软件名称:百度地图电脑版 7.4.0 pc版 软件大小:29.0MB更新时间:
软件名称:百度地图坐标拾取器 v1.0 绿色版软件大小:901KB更新时间:
怎么在百度地图上标注店名 百度地图标注方法
百度地图标注店名方法
1、注册登陆,完善个人信息:直接访问/注册百度账号,激活并完善个人信息;或通过百度地图主页右上角点击&商户免费标注&完成注册登陆。
2、能查到店铺,可以直接认领:请在地图上方的框中输入您的店铺,如果能够查到您的店铺,请直接认领,认领时需要上传您的证照资质。如果无法查到,请先标注其所在的位置,再进行认领。
3、查不到店铺,先标注,再认领点击&我要标注&,填写商户名称和精确的地址位置,精确到门牌号。点击&标注商户位置&,双击地图,放大地图比例。地图比例越大,标注的准确度越高。需要放到最大层级,即双击鼠标地图不再放大,地图能够清楚显示你所在位置的周边环境为止。参照你周边的地标性建筑,拖拽地图中的红点,标注到你认为最准确的位置,点击确定提交后,在进行认领。
4、提交申请后,需要5-7天的审核期,请耐心等待。
最后,为大家附上百度地图的一些其他功能:
1、 免费语音导航功能
2、 云端收藏地点、路线
3、 账号互通,电脑与手机同步收藏
4、 生活搜索功能,包含餐饮、酒店类百万商户的深度信息,更有优惠券可用,还支持周边外卖搜索,***订餐功能
5、 超炫卫星图、3D模式,更立体、更直观
6、 离线包压缩90%以上,支持省包下载,支持双SD卡,更快捷、更省流量
7、 罗盘模式,自动根据你的朝向旋转地图,提升真实感完美实现&图随你转&
8、 含各种路况事件信息及实时路况时间信息,包括管制、施工、事故信息等,&彩色蚯蚓&功能完美展现路线路况。
大家感兴趣的内容
12345678910
最近更新的内容百度地图云麻点之批量上传、实时显示数据篇 - 迷失的醉猫 - 推酷
百度地图云麻点之批量上传、实时显示数据篇 - 迷失的醉猫
介绍了几个比较实用的百度地图特效,其中重点介绍了海量数据上传及响应的问题,前端展示可以通过LBS云麻点来展示,通过这个可以解决批量数据Marker响应特慢的性能问题。首先在百度云服务器上建完表之后,我们可以通过后台的管理平台直接把数据传上去,作为我们的初始数据。这部分数据有了之后,接下来要做的就是想办法手动同步数据,更智能一点就是实时同步数据,接下来就带你一步步实现这个过程。
这次在正文开始之前,我想先做一次吐槽君。最近压力有点儿大,先来发一下牢骚。三人行,则必有我师。无论你职位的高低,工作没有贵贱,当你是新手的时候,你应该要放低姿态,当你是老手的时候,更要放低姿态,因为成熟的麦子都是低着头的。。。上帝为你开了一扇门,就肯定会为你关一扇窗,无论什么时候,都不要觉得你比别人优越多少。当工作中你发现别人犯了错时,你没有义务去纠正别人,帮助别人改正,但是退一万步,你至少不应该冷嘲热讽吧。本是同根生,相煎何太急?程序员又何必为难程序员呢?你可能比别人多了两年的经验,可能比别人多写了些代码,可是你能保证各方面都比别人优秀吗?如果你是老手,多帮帮别人,你漫不经心的一句话可能让别人脱离了迷惘;如果你是新手,努力学习,不要永远做新手!最后,能在一起工作都是缘分,且行且珍惜!
首先,说说这次同步过程中发现的几个问题及解决方案。1、百度云麻点样式无法自定义,只能使用官方的一些坐标点的样式;2、虽然官方给出的数据是一天请求10万次,但是如果请求频繁的话,会返回错误的数据;3、百度云检索最多只能返回2000条数据,如果需要返回更多数据,可以通过云存储里的查询指定条件的数据列表接口来实现;4、云服务器数据会有缓存,有时候更新不及时;5、上传数据的csv格式里有一列是空的,不知道是干什么用的。
接下来开始今天的正文,数据同步这块儿,这里经历了文章开头说到的两个过程,由手动同步升级成自动同步。刚开始做的是傻瓜似的,在页面上放了一个按钮,在按钮点击的时候向handler发送请求,然后去获取本地数据,然后更新到百度云服务器。下图是上传数据需要的接口:
通过API接口可以看到,发送的请求参数也比较少,三个必须参数,一个表ID geotable_id,一个csv文件,即需要上传的数据,另外一个是访问权限ak。到这里我们大致的思路就出来了,首先生成csv格式的数据文件,然后获取配置的ak和geotable_id,然后封装参数,接着发送Post请求。下面我们来一步一步实现这个过程:
首先生成csv格式的数据文件。这里发生的场景是这样的:当我们最初在百度云服务器建表的时候,表建完之后我们会把最初的数据通过API控制台的数据管理后台把数据批量上传上去,然后本地数据会不断更新,当我们点击页面同步数据按钮的时候,最重要的一个判断就是----需要同步哪些数据。这里可以有两种方案,第一,通过配置表的参数来存本地更新之前最大的一条记录的主键,然后同步的时候去找比这条数据主键更大的数据;第二,直接向百度服务器获取数据,因为百度云存储那边可以对查询出来的数据进行倒叙排序,所以我们只需要按排序字段进行倒叙排列,然后取top1条记录,这样也可以得到最大记录的主键。得到这个主键之后,接下来做的操作就简单了,每次点击同步的时候,对比服务器上存的最大记录主键跟本地数据库当前最大记录主键的大小,如果服务器上的数据比本地小,则有数据需要同步,反之则不。关键代码:
以下是同步数据的关键代码:
#region 同步数据
/// &summary&
/// 同步数据
/// &/summary&
/// ¶m name=&context&&&/param&
private void HttpToSyncBaiduData(HttpContext context)
string posturl = &http://api./geodata/v3/poi/upload&;
Users userBll = new Users();
int userId = Globals.SafeInt(context.Request.Form[&userId&], -1);
if (userId & 0)//当前云存储中最大的UserId
DataSet ds = userBll.GetUserData(userId);
if (!DataSetTools.DataSetIsNull(ds))
string originalName = ExportDataGridToCSV(ds.Tables[0]);
NameValueCollection nvc = new NameValueCollection();
nvc.Add(&geotable_id&, geotable_id.ToString());
nvc.Add(&ak&, ak);
string contents = HttpUploadFile(posturl, originalName, &poi_list&, &application/vnd.ms-excel&, nvc);
FileManage.DeleteFile(originalName); //删除原文件
JsonObject jsonObject = JsonConvert.Import&JsonObject&(contents);
context.Response.Write(jsonObject);
JsonObject jsonObject = new JsonObject();
jsonObject.Put(&status&, &-1&);
context.Response.Write(jsonObject);
#endregion
这里涉及了两个方法,一个是将DataTable转成CSV文件,一个是发送Post请求,以下是代码:
#region DataGrid转CSV文件
/// &summary&
/// Export the data from datatable to CSV file
/// &/summary&
/// ¶m name=&grid&&DataGrid&/param&
public string ExportDataGridToCSV(DataTable dt)
string path = null;
string strFile = &syncUserData& + DateTime.Now.ToString(&yyyyMMddhhmmss&) + &.csv&;
path = HttpContext.Current.Server.MapPath(strFile);
using (System.IO.FileStream fs = new FileStream(path, System.IO.FileMode.Create, System.IO.FileAccess.Write))
using (StreamWriter sw = new StreamWriter(fs, new System.Text.UTF8Encoding()))
for (int i = 0; i & dt.Columns.Count - 1; i++)
sw.Write(dt.Columns[i].ColumnName);
sw.Write(&,&);
sw.Write(dt.Columns[dt.Columns.Count - 1].ColumnName);
sw.WriteLine(&&);
for (int i = 0; i & dt.Rows.C i++)
for (int j = 0; j & dt.Columns.Count - 1; j++)
sw.Write(DelQuota(dt.Rows[i][j].ToString()));
sw.Write(&,&);
sw.Write(DelQuota(dt.Rows[i][dt.Columns.Count - 1].ToString()));
sw.WriteLine(&&);
sw.Flush();
#endregion
#region 过滤特殊字符
/// &summary&
/// Delete special symbol
/// &/summary&
/// ¶m name=&str&&需要过滤的字符串&/param&
/// &returns&&/returns&
public string DelQuota(string str)
string result =
string[] strQuota = { &~&, &!&, &@&, &, &$&, &%&, &^&, &&&, &*&, &(&, &)&, &`&, &;&, &'&, &,&, &/&, &:&, &/,&, &&&, &&&, &?&, &|& };
foreach (string item in strQuota)
if (result.Contains(item))
result = result.Replace(item, &&);
#endregion
以下是直接发送Post请求的代码,之前在网上找了很多C#发送Post请求的,用的时候都是各种问题,后来才找到下边这个,确实是可以用:
#region Post方式提交请求
/// &summary&
/// Post方式提交请求
/// &/summary&
/// ¶m name=&url&&请求地址&/param&
/// ¶m name=&file&&文件&/param&
/// ¶m name=¶mName&&参数名称&/param&
/// ¶m name=&contentType&&类型&/param&
/// ¶m name=&nvc&&参数集合&/param&
/// &returns&&/returns&
public string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc)
string result = string.E
string boundary = &---------------------------& + DateTime.Now.Ticks.ToString(&x&);
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes(&\r\n--& + boundary + &\r\n&);
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = &multipart/form- boundary=& +
wr.Method = &POST&;
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultC
Stream rs = wr.GetRequestStream();
string formdataTemplate = &Content-Disposition: form- name=\&{0}\&\r\n\r\n{1}&;
foreach (string key in nvc.Keys)
rs.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
rs.Write(formitembytes, 0, formitembytes.Length);
rs.Write(boundarybytes, 0, boundarybytes.Length);
string headerTemplate = &Content-Disposition: form- name=\&{0}\&; filename=\&{1}\&\r\nContent-Type: {2}\r\n\r\n&;
string header = string.Format(headerTemplate, paramName, file, contentType);
byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);
rs.Write(headerbytes, 0, headerbytes.Length);
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
rs.Write(buffer, 0, bytesRead);
fileStream.Close();
byte[] trailer = System.Text.Encoding.ASCII.GetBytes(&\r\n--& + boundary + &--\r\n&);
rs.Write(trailer, 0, trailer.Length);
rs.Close();
WebResponse wresp = null;
wresp = wr.GetResponse();
Stream stream2 = wresp.GetResponseStream();
StreamReader reader2 = new StreamReader(stream2);
result = reader2.ReadToEnd();
catch (Exception ex)
if (wresp != null)
wresp.Close();
wresp = null;
wr = null;
#endregion
这里有点奇怪啊,开始我是通过PostMan直接操作的,抓取了提交的参数等信息,然后在后台去拼这个请求,跟PostMan提交的参数完全一致,可是百度返回的提示却一直都是少参数,无奈之下只能放弃最初自己写的,采用了上边的那种方式,不过好在最终目的还是实现了。
手动同步用了一段时间之后,就发现问题了,每当需要同步数据的时候,都得点一下,这样领导就不高兴了。莫非我要叫个人实时去点这个按钮么?好吧,我做个自动同步的工具。这里说的自动同步工具,其实就是隔一段时间就自己去同步一下数据,隔一段时间去同步一下数据。这里最初也想了两个方案,一个就是做一个页面,隔一段时间向后台发请求,检查是否有可更新的数据,如果有可以更新的数据,就调一下上边的方法。这样做的优势是改动量最小,只需要加一个页面然后写个定时器就搞定了,可是缺点就是如果有多个人同时打开这个页面,数据就会混乱。另一个方案就是建一个Windows服务,定期去跑这个同步数据的代码。这样做的优势是不依赖于IIS,稳定。最终执行的方案也是后者,通过构建windows服务来做这个事情。
构建Windows服务这里就不赘述了,网上有很多示例,基本上都是一搜一大把。在服务里,我们每隔5分钟去跑一次自动同步的代码,这样就实现了数据自动同步功能。关于百度LBS数据同步这块儿到此结束。这两天正在做一个新用户注册特效和用户下单特效。大致需求就是在以下这个云麻点地图上,一旦有新用户注册,以动态图片显示出他的坐标位置信息,用户下单也是一样,每个用户都是一个云麻点,一旦某个用户下单成功,展示一个烟花绽放的特效。基本功能都做得差不多了,哪天有时间再更新上来!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致