高德地图打造麦当劳门店城市分布可视化

在网上浏览外卖订餐网站的时候,偶然发现肯德基、麦当劳、真功夫的各个城市门店地址。所以想爬取麦当劳广州门店地址,然后使用高德地图的热力图进行可视化。
可视化需要解决的思路:1.门店地址包含许多掺杂数据,需要进行清洗;2.热力图需要数据格式是经纬度,所以要把地理位置转换成经纬度;3.构造高德heatmapData所需数据格式。

  • 1.广州麦当劳门店数据是以下格式,其中的排序号,以及后面的电话号码我们不需要,所以需要去除掺杂的数据项:
1、广州麦当劳地址:广东省广州市天河区珠江新城花城大道760号首层及二层,广州麦当劳电话:020-38069027,24小时营业餐厅、提供麦咖啡McCafe、提供早餐、属于家庭型餐厅、可以叫麦乐送网上订餐。
2、广东广州市越秀区环市西路184号红棉国际时装城四层的部分场地,电话:020-83206470
3、广州市天河区花城大道89号花城汇负一层1065-2、1065-3号,电话:020-38325574
4、广州市荔湾区康王中路468号和业广场二层2-06号、2-07号、2-08号、2-12、2-13号、2-14号商铺,电话:020-31026169
5、增城市新塘镇(永和)岗丰大道2号之自编商业D1栋,电话:13926106615
6、广州市国际路25号中唱大厦首层,电话:020-86375770
7、广州市新港西路142号3, 4号楼,电话:020-84187500
8、广州市番禺区市桥街东涌路12号信联大厦首层,电话:020-84817166
9、广州市增城市新塘镇荔新公路新塘国际贸易中心1幢首层、二层,电话:020-82700103
10、广东从化瓦窑岗服务区东区,电话:020-87880811
11、广东从化瓦窑岗服务区西区,电话:020-37976567
12、中国广东省天河区珠江新城花城大道85、87号F1-5地块高德置地广场春商场第B2/层01、02单元,电话:13826183286
13、中国大陆地区广东广州市荔湾区中山八路39号之三富力广场B6栋首层及二层,电话:020-81014166
14、广州市白云区三元里街梓元岗路15号柏丽皮具城2楼,电话:020-36248466
15、广州市海珠区新港西路68号富景花园首层,电话:020-34246927
16、广州市海珠区宝岗大道中183号宏宇广场首层,电话:020-34142418
17、广州市天河北路559-565号金田花苑首层和夹层,电话:020-38479657
18、广州市海珠区工业大道中石岗路90号嘉盛购物广场首层,二层,电话:020-84340337
19、广州市越秀区龟岗大马路1号东山酒家首、二层,电话:020-37623874
20、广州市番禺区洛溪新城洛溪商业中心1座首、夹层,电话:020-34503893
21、广州市番禺区市桥繁华路易发商业街东街一楼、二楼,电话:020-84703399
22、广州市白云区机场路百信广场二层部分商铺,电话:020-86309330
23、广州市白云区石井街石槎路东侧地段,电话:020-62137757
24、广东省广州市天河区天河路621一625号二层,电话:020-87536831
25、广州市黄埔区大沙西路311号首层F113铺、二层F217铺,电话:22309043
26、广州市海珠区海珠客运站客运大楼东侧二楼,电话:020-34447257
27、广州市黄埔东路3713号富域尚品居首层101房、二层201房,电话:13560169178
28、广州市天河区林和西路161号中泰广场首层及夹层,电话:020-38251712
29、广州市海珠区前进路40号万国商业广场首、二层,电话:020-84420575
30、广州市花都区狮岭镇杨赤路合成段合成大厦首层商铺,电话:020-86985932
31、广州市番禺区105国道钟村商会大厦首、二层,电话:020-39907776
32、广州市荔湾区站前路90号三层过街楼北侧商铺,电话:020-83213403
33、广州市番禺区南村镇梅山大道北8号之一首层A57室商铺,电话:020-34828425
34、增城市新塘镇广深大道西545号之自编商业A1栋,电话:020-82601613
35、广州市荔湾路100号华厦康隆百货首层,电话:020-81825064
36、广州市建设六马路38号宜安广场首层,电话:020-83634339
37、广州市黄埔区黄埔东路298号黄埔花园商业中心惠润广场首层,电话:020-32016480
38、广州市越秀区广园西路342号首层101号自编103A商铺、二层自编201商铺,电话:020-37329030
39、广州市白云区广州大道北1521号首层101号自编106商铺、二层201号自编201商铺,电话:020-87094665
40、广州市白云区江高镇江村夏花三路109号之22首层1号商铺,电话:020-36770064
41、广州市白云区鹤鳌公路501号,电话:020-86314881
42、广州市番禺区小谷围街广州大学城北亭广场
43、广州市黄埔区黄埔东路2937号金竹山广场首层黄埔麦当劳,电话:020-61013748
44、广州市番禺区大石镇涌口村迎宾大道星河湾销售中心首层,电话:020-34788076
45、广州市白云区风景区鸣春谷浏览区管理处山顶公园、索道上站旁,电话:020-66612888-3322
46、增城市新塘镇广园快速路凤凰城凤妍苑2街1号101商铺自编T111A、T111B,电话:13570242240
47、广州市天河区天河路299号时尚天河EF001,电话:020-37022963
48、广州市荔湾区下九路90、92号二、三层,电话:020-81249090
49、广州市越秀区北京路182号丽都大酒店首、二层,电话:020-83330006
50、广州经济技术区开创大道亨晖商业广场首层,电话:020-62952523
51、广州市越秀区北京路312号青年文化宫首层、二层,三层,电话:020-83172590
52、广州市番禺区大石街建华路"建华汇商业中心"首、二层部分商铺,电话:020-34899606
53、广州花都区建设路20号及商业大道22号,电话:020-86812006
54、广州市黄埔区大沙地东云樯大厦首层,电话:020-82274510
55、广州市海珠区广州国际轻纺城金纺路2号,电话:020-89261826
56、广州市环市东路339号广东国际大厦二层204,205号铺,电话:020-83383352
57、广州市天河区花城大道20号负一层104号铺,电话:020-85607100
58、武广高速铁路广州南站高架夹层,电话:15711769534
59、广州市白云区机场路1264号首层之一,1268号二层自编B1商铺,电话:020-36173221
60、广州市海珠区上渡路123号首层,电话:020-34253090
61、广州市番禺区番府国用(2000)字第05-000426、05-000072号地块,电话:020-34829929
62、广州市越秀区广园西路99号及99号之一,电话:020-86513586
63、广州市番禺区南村镇里仁洞村迎宾路东侧海印又一城105,电话:020-39948181
64、广东省广州市番禺区大岗镇兴业路阳光城市广场首层,电话:020-34995028
65、广州市东山区中山三路33号中华广场七楼,电话:020-83739827
66、广州市海珠区南洲路北晓港湾英华街27-55号101首层001号商铺,电话:020-89448271
67、广州市海珠区昌岗中路130号首层及二层商铺,电话:020-89564862
68、广州市越秀荔湾区环市西路139号教学实习大楼(汇美商业大厦),电话:020-83059413
69、广东省广州市海珠区闽江中路380号会展中心负一层,电话:020-89130483
70、广州市番禺区福德路325号101房,电话:020-31056939
71、广州市白云区黄石北路65号67号69号73-87号(单)101房及89号101房首层02-05商铺,电话:020-37153470
72、广州市白云区同丛云与同泰路交界东南侧地块(丛云路1032号,1034号,1036号),电话:020-86330160
73、广州市荔湾区地铁芳村站内地下一层,电话:020-81807277
74、广州市海珠区敦和路59号之一,电话:020-84217520
75、广州市番禺区大北路104,110号,电话:020-84816190
76、广州天河区黄埔大道499号首、二层自编29号,电话:020-38816892
77、广州市白云区三元里大道684号之一自编A01,电话:020-86338013
78、广州市新港中路468号堂皇商业大楼首、二层,电话:020-84286765
79、广州市东山区三育路44号首层,电话:020-87603370
80、广州省从化市街口镇新世纪广场首层从化麦当劳,电话:020-87921092
81、广东省增城市新塘镇解放北路115号海日中心首层、夹层增城麦当劳,电话:020-82700925
82、广州市荔湾区中山八路73号琼洲大酒店首层、二层,电话:020-81935009
83、广州市南沙区进港大道金州段富佳花园,电话:020-39091368
84、广州市江南西路46号江南新地商业街负一层A区A11b、A12b、A13b号商铺,电话:020-84416159
85、广州市海珠区逸景路西464-466号珠江国际纺织城小区自编GJ-4二层20981-20982、21075-21082号商铺,电话:020-62389283
86、广州市增城新塘广深大道东170号自编商业A1栋,电话:020-32161413
87、广州市大沙头路21号首层及二层,电话:020-83847725
88、广州市环市东路507-509号首层及二层,电话:020-37606101
89、广州市番禺区桥南珠路1号番禺麦当劳,电话:020-84815033
90、广州市番禺区大石街朝阳西路大石城首层101商铺
91、广州市花都区新华街公益大道27号百业商业文化中心中心首层002-007号商铺花都麦当劳,电话:020-86881135
92、广州市白云区黄石街黄石西路457-459号首层部分商铺,电话:020-26273216
93、广州市天河区长兴路13号高德汇购物中心卜蜂莲花超市首层及二层1A-01和2A-01,电话:020-85605905
94、广州市番禺区小谷围街中二横路1号高高新天地商业广场一层1028商铺,电话:020-39167352
95、广东省广州市北京路297-299号,电话:020-83384341
96、广东省广州市人民中路304-314号,电话:020-81912822
97、广州市中山三路25-27号英雄广场人防工程负一层,电话:020-83842963
98、广州市东川路93号省人民医院综合楼首层及二层,电话:020-83885037
99、广州天河区龙洞牌坊1号,电话:02087030869
100、广州市天河区东站路1号广州火车东站综合楼裙楼二层旅客出入口东侧商铺,电话:020-38083277
101、广州市越秀区较场西路16号,电话:020-83832110
102、广州市番禺区石碁镇市莲路石岗东村段41号,电话:18826236652
103、广州市白云区西槎路101号首层自编A107商铺二层自编A204商铺,电话:020-36471852
104、广东广州芳村区花地大道北93-103号花地城广场首层,负一层,电话:020-81569737
105、广东省广州市花都区云山大道31号,电话:020-86801161
106、广州市天河区五山岳洲路42号1、2楼,电话:02085286067
107、广州市环市西路159号之一的新地中海商业广场自编8008号商铺,电话:020-22897868
108、广州市增城荔城街西城路23号首层1001号商铺,电话:020-82731316
109、广州市天河区天河路228号正佳广场五楼501铺,电话:020-85505753
110、广东省广州市荔湾区恩宁路258-262号广州市汇福时尚基地时装商场首层自编A1号商铺,电话:020-81215760
111、广州市番禺区武广高铁广州南车站高架夹层及出站层餐饮店及配送点(编号3-13、广1-71),电话:020-31132357
112、广州市番禺区钟村镇南汽车客运站负二层,电话:020-31032062
113、广州市越秀区东风西路197-199号广州国际金融大厦,电话:020-83397275
114、广州市天河路351号广东对外经贸大厦首层,电话:020-38869432
115、广州市天河区体育西路191号中石化大厦柏西南都负一层广州天河麦当劳,电话:020-38922488
116、广州市天河区垦路与广源东路交汇处侨英花园B栋105铺全部106铺部分,电话:020-37225744
117、广州市白云区同和中路圣地南路2号,电话:020-87061568
118、广州市天河区东站路3号广州东火车站综合楼首层A19-21号铺,电话:020-61311809
119、广州市越秀区流花路首层105号铺位,电话:020-88811132
120、广州增城市荔城街增城大道69号增城万达广场步行街2038号商铺,电话:13926106615
121、广州市花都区宝华路36号一层自编01、02、03、04号商铺,电话:15088090878
122、广州市天河区珠江新城花城大道88号首层119A、120A、121A、128A-2、C1储藏室,电话:020-38615091
123、广州市番禺区石楼镇赤岗村“尚上名筑A区商铺(一区)”首层部分商铺,电话:020-31042680
124、广州市天河区东圃大马路7-11号汇友苑首、二层,电话:020-82320178
125、广州白云国际机场候机楼东三连廊一层C102标段A8003,电话:020-37152603
126、广州市五羊新城B4号,电话:020-87360684
127、广州市江南大道中348号,电话:020-84237632
128、广州市中山四路244-258号信德商务中心首层、二层,电话:020-83635429
129、广州市荔湾区下九路63号名汇商城首层、二层、三层,电话:020-81248433
130、广州市越秀区中山六218--222号捷泰广场首层,电话:020-81321195
131、广州市环市西路194号首层,电话:020-86018203
132、广州市增城新塘镇园快速路以北碧桂园凤凰城,电话:02082973008
133、广州市番禺区清河东路番禺客运站场东一座,电话:020-34581328
134、广州市白云区三元里大道1231号棠辉商业综合楼,电话:020-36048120
135、广州市海珠区新港中路350号之六广州市丽之影商业广场,电话:020-34010583
136、广州市番禺区市桥禺山大道西横江村侧“大夫山森林公园”面向钟屏大道的北门广场西边部分,电话:020-39909753
137、广州市海珠区江南大道南408号,电话:020-34214114
138、广州市越秀区环市中路301-303号1楼商铺自编A01A号,电话:020-83497010
139、广州市天河区体育西路77号首层及二层,电话:020-85596080
140、广州市番禺区市桥街大北路140号,电话:020-84816221
141、广州越秀区西湖路至大马站路段广百广场新翼首层及夹层,电话:020-83327929
142、广州市广花五路95、99号首层、二层,电话:020-86650872
143、广州市番禺区大石镇105国道上漖村路段96号,电话:02034508626
144、广州市人民路88号儿童公园,电话:02062656229
145、广州白云万达广场步行街1-3层,电话:020-36689702
146、广州市越秀区环市西路155号之三112、208、305、404房,电话:020-86663137
147、广州市天河区五山路141号尚德大厦首层104A号商铺,电话:020-38551661
148、广州市荔湾区东漖南路123号商业楼一楼自编1号,电话:020-81675996
149、广州市天河区华观路1411号101房,电话:020-38939121
150、广州市黄埔大道伟诚广场首、二层广州黄埔麦当劳,电话:020-85636726
151、广州番禺市桥繁华路90号新亦发商业城首层102商铺,电话:020-84877718
152、广州市花都区新华街龙珠路32号星缘美居首层,电话:020-36928028
153、广东省广州市天河区中山大道棠下村口达善大街1号之三首层商铺,电话:020-85543218
154、广州市海珠区新港东路1000号保利世界贸易中心博览馆负一层,电话:020-89047104
155、广州市越秀区广园西路27号自编14栋二楼201房,电话:020-81268154
156、广东省广州市花都区狮岭镇盘古路与东升中路交界友田商业广场,电话:020-86910747
157、广州市起义路一号首层及二层,电话:020-83328692
158、广州市江南大道中路73号百利华庭首、二层,电话:020-89228008
159、广东省增城市荔城镇挂绿路6号桂绿广场首、二层,电话:020-82710106
160、广州市天河区黄埔大道208-210号海涛酒店首、二层,电话:020-87589745
161、广州市天河区龙洞迎龙大道6号龙洞购物中心首层B区A005号,电话:020-85202612
162、增城市新塘镇塘美村狮山新塘汽车客运站之商业中心商铺自编号B栋,电话:020-26233451
163、广州市番禺区东环街东环社区光明北路583号,电话:020-34808450
164、广州市番禺区沙湾镇龙岐村西环路“荔园新天地项目”地块,电话:020-31047633
165、广州市小北路193-215号广州鹏源大厦首层,电话:020-83551877
166、广州市天河区花城大道89号花城汇三区负一层3001号商铺,电话:020-38317158
167、广州市天河北路233号中信广场中首层及二层,电话:020-38772219
168、广州市荔湾区环市西路54号地下层,电话:020-86474532
169、中国进出口商品交易会琶洲展馆二期工程固定餐饮区二层,电话:020-89063686
170、广东省广州市白云区人和镇鹤龙6路187号,电话:020-36020898
171、广州市白云区松南路1号自编B栋首层自编101号商铺,电话:020-81783522
172、广州市增城荔城街府佑路98号东汇城一期首层1117号和1118号商铺,电话:020-26250113
173、广州市荔湾区芳村花地大道中路51号芳村客运站二楼售票大厅对开位置,电话:020-81491551
174、广州市白云区景泰直街31号天津大厦首层、二层,电话:020-86186273
175、广州经济技术开发区青年路中成大厦首层,电话:020-82221552
176、广州天河区中山大道广州天河购物中心首层,电话:020-87568249
177、广州市流花路东方宾馆东翼商场首、二层,电话:020-86678359
178、广州市天河区员村二横路兰亭街11号,电话:020-85534901
179、广州市天河区燕玲路91号新燕大厦首层,电话:020-38677852
180、广州市白云区解放北路1000号三层3D01商铺,电话:020-36251606
181、广州市越秀区先烈中路110号之一树熊商城自编首层01铺、08铺02单元,电话:020-38378610
182、广州市环市西路133号华南影都南楼首层、二层,电话:020-86509251
183、广州市海珠区宝业路6号A栋,电话:020-34229497
184、广州市天河区石牌岗顶天河路586号
185、广州市天河区先烈东路296号沙河宾馆首层
186、广州市吉祥路1号广州动漫星城负一层,电话:020-62681280
187、广州市海珠区盈丰路1-5号A7-A8栋105号房,电话:020-34070068
188、广州白云机场新航站楼A到达区,电话:020-36066688
189、广州市天河区珠江新城金穗路28号102之1商铺,电话:020-38262552
190、广州市荔湾区宝华路133号恒宝广场地库一层0124、0125、0126号铺,电话:020-81278515
191、广州市越秀区三元里大道423号一层自编14号和二层自编14号,电话:13925168844
192、广州市花都区新华镇秀全大道32号2号铺首,二层,电话:020-36957873
193、广州市越秀区一德路169-171号1F+2F+3F,电话:13724655170
194、广州市荔湾区中山七路陈家祠绿化广场康王商业城地下一层A区,电话:020-81952086
195、广州天河区天河路228号正佳商业广场3楼,电话:020-38330551
196、广州市天河区林和东路119号首层部分和121号负一层部分,电话:020-38251481
197、广东省增城市新塘镇港口大道北公路金海岸城市广场首层G区1-5商铺,电话:020-32866791
198、广州市天河区黄村大道路5号首层101号商铺及二层201商铺
199、广州市萝岗区万荟二街57,59,61,63号
200、广州番禺汉溪大道东381号万达广场二层2001号商铺
201、广州市花都区新华镇建设北路78号首层、二层部分商铺
202、广州市荔湾区东漖北路560号1楼自编5号
203、广州市南沙区东涌镇市南公路东涌段160162段
204、广州市白云区太和镇太和中路94号首层自编03商铺
205、广东省从化市江埔街海塱东路7号欣荣宏.国际商贸城1-1层05超市之自编101号商铺广州麦当劳
  • 2.首先需要爬取广州麦当劳数据, 广州麦当劳门店数据获取网址,爬取的方式比较简单,直接使用scrapy爬取需要的门店数据,下面是爬取的核心源码展示:
# -*- coding: utf-8 -*-
import scrapy
from scrapy import Request
import re
from MCAddress.items import McaddressItem
class McSpider(scrapy.Spider):
    name = "MC"
    allowed_domains = ["www.4008517517.net/"]
    start_urls = ['http://www.4008517517.net/']
    url="http://www.4008517517.net/maidanglao/fendian/mdl5471.html"
    headers={
        'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'Accept-Encoding':'gzip, deflate, sdch',
        'Accept-Language':'zh-CN,zh;q=0.8',
        'Cache-Control':'no-cache',
        'Connection':'keep-alive',
        'Cookie':'safedog-flow-item=4BAE0CC95B2F77549179F9A606A0E5E3; AJSTAT_ok_pages=1; AJSTAT_ok_times=2; Hm_lvt_44fe0dd5b9e3bf339d71b9cf97456017=1509252670,1509280318; Hm_lpvt_44fe0dd5b9e3bf339d71b9cf97456017=1509280318',
        'Host':'www.4008517517.net',
        'Pragma':'no-cache',
        'Upgrade-Insecure-Requests':'1',
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
    }
    def start_requests(self):
        yield Request(url=self.url,callback=self.parse,headers=self.headers,dont_filter=True)

    def parse(self, response):
        count=24
        while count<=228:
            item=McaddressItem()
            xpathStr="/html/body/div[4]/div[1]/div[1]/div[4]/div["+str(count)+"]/text()"
            addr=response.xpath(xpathStr).extract_first()
            # 清洗不需要的数据,去除电话号码与及前面的序号
            addr=addr.split(',')[0]
            addr=re.sub('\d+\、','',addr)
            addr=re.sub('\:','',addr)
            item["address"]=addr.strip()
            yield item
            count+=1
  • 3.爬虫项目的目录结构如下所示:
MCAddress
├─.idea
│  └─scopes
├─MCAddress
│  ├─spiders
│  │  └─__pycache__
│  └─__pycache__
└─__pycache__
  • 4.在MCAddress根目录下运行启动爬虫命令,并把数据保存输出为json格式:
$ scrapy crawl MC -o addr.json
  • 5.得到的数据格式如下所示,addr.json:
[
{"address": "广州麦当劳地址广东省广州市天河区珠江新城花城大道760号首层及二层"},
{"address": "广东广州市越秀区环市西路184号红棉国际时装城四层的部分场地"},
{"address": "广州市天河区花城大道89号花城汇负一层1065-1065-3号"},
{"address": "广州市荔湾区康王中路468号和业广场二层2-06号、2-07号、2-08号、2-2-13号、2-14号商铺"},
{"address": "增城市新塘镇(永和)岗丰大道2号之自编商业D1栋"},
{"address": "广州市国际路25号中唱大厦首层"},
{"address": "广州市新港西路142号3, 4号楼"},
{"address": "广州市番禺区市桥街东涌路12号信联大厦首层"},
{"address": "广州市增城市新塘镇荔新公路新塘国际贸易中心1幢首层、二层"},
{"address": "广东从化瓦窑岗服务区东区"},
{"address": "广东从化瓦窑岗服务区西区"},
{"address": "中国广东省天河区珠江新城花城大道87号F1-5地块高德置地广场春商场第B2/层02单元"},
{"address": "中国大陆地区广东广州市荔湾区中山八路39号之三富力广场B6栋首层及二层"},
{"address": "广州市白云区三元里街梓元岗路15号柏丽皮具城2楼"},
{"address": "广州市海珠区新港西路68号富景花园首层"},
{"address": "广州市海珠区宝岗大道中183号宏宇广场首层"},
{"address": "广州市天河北路559-565号金田花苑首层和夹层"},
{"address": "广州市海珠区工业大道中石岗路90号嘉盛购物广场首层"},
{"address": "广州市越秀区龟岗大马路1号东山酒家首、二层"},
{"address": "广州市番禺区洛溪新城洛溪商业中心1座首、夹层"},
{"address": "广州市番禺区市桥繁华路易发商业街东街一楼、二楼"},
{"address": "广州市白云区机场路百信广场二层部分商铺"},
{"address": "广州市白云区石井街石槎路东侧地段"},
{"address": "广东省广州市天河区天河路621一625号二层"},
{"address": "广州市黄埔区大沙西路311号首层F113铺、二层F217铺"},
{"address": "广州市海珠区海珠客运站客运大楼东侧二楼"},
{"address": "广州市黄埔东路3713号富域尚品居首层101房、二层201房"},
{"address": "广州市天河区林和西路161号中泰广场首层及夹层"},
{"address": "广州市海珠区前进路40号万国商业广场首、二层"},
{"address": "广州市花都区狮岭镇杨赤路合成段合成大厦首层商铺"},
{"address": "广州市番禺区105国道钟村商会大厦首、二层"},
{"address": "广州市荔湾区站前路90号三层过街楼北侧商铺"},
{"address": "广州市番禺区南村镇梅山大道北8号之一首层A57室商铺"},
{"address": "增城市新塘镇广深大道西545号之自编商业A1栋"},
{"address": "广州市荔湾路100号华厦康隆百货首层"},
{"address": "广州市建设六马路38号宜安广场首层"},
{"address": "广州市黄埔区黄埔东路298号黄埔花园商业中心惠润广场首层"},
{"address": "广州市越秀区广园西路342号首层101号自编103A商铺、二层自编201商铺"},
{"address": "广州市白云区广州大道北1521号首层101号自编106商铺、二层201号自编201商铺"},
{"address": "广州市白云区江高镇江村夏花三路109号之22首层1号商铺"},
{"address": "广州市白云区鹤鳌公路501号"},
{"address": "广州市番禺区小谷围街广州大学城北亭广场"},
{"address": "广州市黄埔区黄埔东路2937号金竹山广场首层黄埔麦当劳"},
{"address": "广州市番禺区大石镇涌口村迎宾大道星河湾销售中心首层"},
{"address": "广州市白云区风景区鸣春谷浏览区管理处山顶公园、索道上站旁"},
{"address": "增城市新塘镇广园快速路凤凰城凤妍苑2街1号101商铺自编T111A、T111B"},
{"address": "广州市天河区天河路299号时尚天河EF001"},
{"address": "广州市荔湾区下九路92号二、三层"},
{"address": "广州市越秀区北京路182号丽都大酒店首、二层"},
{"address": "广州经济技术区开创大道亨晖商业广场首层"},
{"address": "广州市越秀区北京路312号青年文化宫首层、二层"},
{"address": "广州市番禺区大石街建华路\"建华汇商业中心\"首、二层部分商铺"},
{"address": "广州花都区建设路20号及商业大道22号"},
{"address": "广州市黄埔区大沙地东云樯大厦首层"},
{"address": "广州市海珠区广州国际轻纺城金纺路2号"},
{"address": "广州市环市东路339号广东国际大厦二层204,205号铺"},
{"address": "广州市天河区花城大道20号负一层104号铺"},
{"address": "武广高速铁路广州南站高架夹层"},
{"address": "广州市白云区机场路1264号首层之一"},
{"address": "广州市海珠区上渡路123号首层"},
{"address": "广州市番禺区番府国用(2000)字第05-05-000072号地块"},
{"address": "广州市越秀区广园西路99号及99号之一"},
{"address": "广州市番禺区南村镇里仁洞村迎宾路东侧海印又一城105"},
{"address": "广东省广州市番禺区大岗镇兴业路阳光城市广场首层"},
{"address": "广州市东山区中山三路33号中华广场七楼"},
{"address": "广州市海珠区南洲路北晓港湾英华街27-55号101首层001号商铺"},
{"address": "广州市海珠区昌岗中路130号首层及二层商铺"},
{"address": "广州市越秀荔湾区环市西路139号教学实习大楼(汇美商业大厦)"},
{"address": "广东省广州市海珠区闽江中路380号会展中心负一层"},
{"address": "广州市番禺区福德路325号101房"},
{"address": "广州市白云区黄石北路65号67号69号73-87号(单)101房及89号101房首层02-05商铺"},
{"address": "广州市白云区同丛云与同泰路交界东南侧地块(丛云路1032号"},
{"address": "广州市荔湾区地铁芳村站内地下一层"},
{"address": "广州市海珠区敦和路59号之一"},
{"address": "广州市番禺区大北路104,110号"},
{"address": "广州天河区黄埔大道499号首、二层自编29号"},
{"address": "广州市白云区三元里大道684号之一自编A01"},
{"address": "广州市新港中路468号堂皇商业大楼首、二层"},
{"address": "广州市东山区三育路44号首层"},
{"address": "广州省从化市街口镇新世纪广场首层从化麦当劳"},
{"address": "广东省增城市新塘镇解放北路115号海日中心首层、夹层增城麦当劳"},
{"address": "广州市荔湾区中山八路73号琼洲大酒店首层、二层"},
{"address": "广州市南沙区进港大道金州段富佳花园"},
{"address": "广州市江南西路46号江南新地商业街负一层A区A11b、A12b、A13b号商铺"},
{"address": "广州市海珠区逸景路西464-466号珠江国际纺织城小区自编GJ-4二层20981-21075-21082号商铺"},
{"address": "广州市增城新塘广深大道东170号自编商业A1栋"},
{"address": "广州市大沙头路21号首层及二层"},
{"address": "广州市环市东路507-509号首层及二层"},
{"address": "广州市番禺区桥南珠路1号番禺麦当劳"},
{"address": "广州市番禺区大石街朝阳西路大石城首层101商铺"},
{"address": "广州市花都区新华街公益大道27号百业商业文化中心中心首层002-007号商铺花都麦当劳"},
{"address": "广州市白云区黄石街黄石西路457-459号首层部分商铺"},
{"address": "广州市天河区长兴路13号高德汇购物中心卜蜂莲花超市首层及二层1A-01和2A-01"},
{"address": "广州市番禺区小谷围街中二横路1号高高新天地商业广场一层1028商铺"},
{"address": "广东省广州市北京路297-299号"},
{"address": "广东省广州市人民中路304-314号"},
{"address": "广州市中山三路25-27号英雄广场人防工程负一层"},
{"address": "广州市东川路93号省人民医院综合楼首层及二层"},
{"address": "广州天河区龙洞牌坊1号"},
{"address": "广州市天河区东站路1号广州火车东站综合楼裙楼二层旅客出入口东侧商铺"},
{"address": "广州市越秀区较场西路16号"},
{"address": "广州市番禺区石碁镇市莲路石岗东村段41号"},
{"address": "广州市白云区西槎路101号首层自编A107商铺二层自编A204商铺"},
{"address": "广东广州芳村区花地大道北93-103号花地城广场首层"},
{"address": "广东省广州市花都区云山大道31号"},
{"address": "广州市天河区五山岳洲路42号2楼"},
{"address": "广州市环市西路159号之一的新地中海商业广场自编8008号商铺"},
{"address": "广州市增城荔城街西城路23号首层1001号商铺"},
{"address": "广州市天河区天河路228号正佳广场五楼501铺"},
{"address": "广东省广州市荔湾区恩宁路258-262号广州市汇福时尚基地时装商场首层自编A1号商铺"},
{"address": "广州市番禺区武广高铁广州南车站高架夹层及出站层餐饮店及配送点(编号3-广1-71)"},
{"address": "广州市番禺区钟村镇南汽车客运站负二层"},
{"address": "广州市越秀区东风西路197-199号广州国际金融大厦"},
{"address": "广州市天河路351号广东对外经贸大厦首层"},
{"address": "广州市天河区体育西路191号中石化大厦柏西南都负一层广州天河麦当劳"},
{"address": "广州市天河区垦路与广源东路交汇处侨英花园B栋105铺全部106铺部分"},
{"address": "广州市白云区同和中路圣地南路2号"},
{"address": "广州市天河区东站路3号广州东火车站综合楼首层A19-21号铺"},
{"address": "广州市越秀区流花路首层105号铺位"},
{"address": "广州增城市荔城街增城大道69号增城万达广场步行街2038号商铺"},
{"address": "广州市花都区宝华路36号一层自编04号商铺"},
{"address": "广州市天河区珠江新城花城大道88号首层119A、120A、121A、128A-C1储藏室"},
{"address": "广州市番禺区石楼镇赤岗村“尚上名筑A区商铺(一区)”首层部分商铺"},
{"address": "广州市天河区东圃大马路7-11号汇友苑首、二层"},
{"address": "广州白云国际机场候机楼东三连廊一层C102标段A8003"},
{"address": "广州市五羊新城B4号"},
{"address": "广州市江南大道中348号"},
{"address": "广州市中山四路244-258号信德商务中心首层、二层"},
{"address": "广州市荔湾区下九路63号名汇商城首层、二层、三层"},
{"address": "广州市越秀区中山六218--222号捷泰广场首层"},
{"address": "广州市环市西路194号首层"},
{"address": "广州市增城新塘镇园快速路以北碧桂园凤凰城"},
{"address": "广州市番禺区清河东路番禺客运站场东一座"},
{"address": "广州市白云区三元里大道1231号棠辉商业综合楼"},
{"address": "广州市海珠区新港中路350号之六广州市丽之影商业广场"},
{"address": "广州市番禺区市桥禺山大道西横江村侧“大夫山森林公园”面向钟屏大道的北门广场西边部分"},
{"address": "广州市海珠区江南大道南408号"},
{"address": "广州市越秀区环市中路301-303号1楼商铺自编A01A号"},
{"address": "广州市天河区体育西路77号首层及二层"},
{"address": "广州市番禺区市桥街大北路140号"},
{"address": "广州越秀区西湖路至大马站路段广百广场新翼首层及夹层"},
{"address": "广州市广花五路99号首层、二层"},
{"address": "广州市番禺区大石镇105国道上漖村路段96号"},
{"address": "广州市人民路88号儿童公园"},
{"address": "广州白云万达广场步行街1-3层"},
{"address": "广州市越秀区环市西路155号之三404房"},
{"address": "广州市天河区五山路141号尚德大厦首层104A号商铺"},
{"address": "广州市荔湾区东漖南路123号商业楼一楼自编1号"},
{"address": "广州市天河区华观路1411号101房"},
{"address": "广州市黄埔大道伟诚广场首、二层广州黄埔麦当劳"},
{"address": "广州番禺市桥繁华路90号新亦发商业城首层102商铺"},
{"address": "广州市花都区新华街龙珠路32号星缘美居首层"},
{"address": "广东省广州市天河区中山大道棠下村口达善大街1号之三首层商铺"},
{"address": "广州市海珠区新港东路1000号保利世界贸易中心博览馆负一层"},
{"address": "广州市越秀区广园西路27号自编14栋二楼201房"},
{"address": "广东省广州市花都区狮岭镇盘古路与东升中路交界友田商业广场"},
{"address": "广州市起义路一号首层及二层"},
{"address": "广州市江南大道中路73号百利华庭首、二层"},
{"address": "广东省增城市荔城镇挂绿路6号桂绿广场首、二层"},
{"address": "广州市天河区黄埔大道208-210号海涛酒店首、二层"},
{"address": "广州市天河区龙洞迎龙大道6号龙洞购物中心首层B区A005号"},
{"address": "增城市新塘镇塘美村狮山新塘汽车客运站之商业中心商铺自编号B栋"},
{"address": "广州市番禺区东环街东环社区光明北路583号"},
{"address": "广州市番禺区沙湾镇龙岐村西环路“荔园新天地项目”地块"},
{"address": "广州市小北路193-215号广州鹏源大厦首层"},
{"address": "广州市天河区花城大道89号花城汇三区负一层3001号商铺"},
{"address": "广州市天河北路233号中信广场中首层及二层"},
{"address": "广州市荔湾区环市西路54号地下层"},
{"address": "中国进出口商品交易会琶洲展馆二期工程固定餐饮区二层"},
{"address": "广东省广州市白云区人和镇鹤龙6路187号"},
{"address": "广州市白云区松南路1号自编B栋首层自编101号商铺"},
{"address": "广州市增城荔城街府佑路98号东汇城一期首层1117号和1118号商铺"},
{"address": "广州市荔湾区芳村花地大道中路51号芳村客运站二楼售票大厅对开位置"},
{"address": "广州市白云区景泰直街31号天津大厦首层、二层"},
{"address": "广州经济技术开发区青年路中成大厦首层"},
{"address": "广州天河区中山大道广州天河购物中心首层"},
{"address": "广州市流花路东方宾馆东翼商场首、二层"},
{"address": "广州市天河区员村二横路兰亭街11号"},
{"address": "广州市天河区燕玲路91号新燕大厦首层"},
{"address": "广州市白云区解放北路1000号三层3D01商铺"},
{"address": "广州市越秀区先烈中路110号之一树熊商城自编首层01铺、08铺02单元"},
{"address": "广州市环市西路133号华南影都南楼首层、二层"},
{"address": "广州市海珠区宝业路6号A栋"},
{"address": "广州市天河区石牌岗顶天河路586号"},
{"address": "广州市天河区先烈东路296号沙河宾馆首层"},
{"address": "广州市吉祥路1号广州动漫星城负一层"},
{"address": "广州市海珠区盈丰路1-5号A7-A8栋105号房"},
{"address": "广州白云机场新航站楼A到达区"},
{"address": "广州市天河区珠江新城金穗路28号102之1商铺"},
{"address": "广州市荔湾区宝华路133号恒宝广场地库一层0126号铺"},
{"address": "广州市越秀区三元里大道423号一层自编14号和二层自编14号"},
{"address": "广州市花都区新华镇秀全大道32号2号铺首"},
{"address": "广州市越秀区一德路169-171号1F+2F+3F"},
{"address": "广州市荔湾区中山七路陈家祠绿化广场康王商业城地下一层A区"},
{"address": "广州天河区天河路228号正佳商业广场3楼"},
{"address": "广州市天河区林和东路119号首层部分和121号负一层部分"},
{"address": "广东省增城市新塘镇港口大道北公路金海岸城市广场首层G区1-5商铺"},
{"address": "广州市天河区黄村大道路5号首层101号商铺及二层201商铺"},
{"address": "广州市萝岗区万荟二街57,59,61,63号"},
{"address": "广州番禺汉溪大道东381号万达广场二层2001号商铺"},
{"address": "广州市花都区新华镇建设北路78号首层、二层部分商铺"},
{"address": "广州市荔湾区东漖北路560号1楼自编5号"},
{"address": "广州市南沙区东涌镇市南公路东涌段160162段"},
{"address": "广州市白云区太和镇太和中路94号首层自编03商铺"},
{"address": "广东省从化市江埔街海塱东路7号欣荣宏.国际商贸城1-1层05超市之自编101号商铺广州麦当劳"}
]
  • 6.爬取到经过清洗的门店数据之后,我们需要把地理位置数据转换成热力图所需要的经纬度格式。上面addr.json的数据从scrapy中exports 出来是Unicode 编码,所以中文没法正常显示,所以需要进行中文字符转码,可以直接使用工具或者代码进行转换。这个我们可以使用高德地图的地理逆编码,把地理位置转换。如果要使用高德地图逆编码api,需要高德地图授权的key值,所以我们需要一个高德开发者账号,高德地图开发申请网站,申请的过程比较简单,跟其他普通的网站用户申请差不多,不再复述。
  • 7.创建成功高德开发者账号之后,进入个人控制台,点击应用管理,创建新应用,因为我们基于高德地图做热力图可视化,所以需要创建两个应用,一个是web端应用,主要申请热力图可视化的key;另外一个是web服务应用,主要是把上面addr.json转换成经纬度。图中的名字是可以随意起,不用刻意相同,两个应用创建过程大致相同。


    控制台

    点击应用管理,然后点击创建新应用

    创建一个应用

    创建地理逆转web服务,另外一个选web端

    获取到的key值
  • 8.把addr.json的门店数据转换成经纬度,高德地图的api请求地址是
http://restapi.amap.com/v3/geocode/geo?key=yourKey&address=yourAddr
  • 9.请求返回的数据格式:
{
    "status": "1",
    "info": "OK",
    "infocode": "10000",
    "count": "1",
    "geocodes": [
        {
            "formatted_address": "广东省广州市南沙区富佳花园",
            "province": "广东省",
            "citycode": "020",
            "city": "广州市",
            "district": "南沙区",
            "township": [],
            "neighborhood": {
                "name": [],
                "type": []
            },
            "building": {
                "name": [],
                "type": []
            },
            "adcode": "440115",
            "street": [],
            "number": [],
            "location": "113.552734,22.801449",
            "level": "兴趣点"
        }
    ]
}
  • 10.利用python的requests模块进行数据请求的转换操作,并从json数据中获取location字段的经纬度值,其中count是地点的权重值,在这里选择随机数random.ranint生成:
import requests
import json
import random
count=10
heatmapData=[]
with open("addr.json","wr+") as f:
      addr=f.read()
for addr in jsonData:
      url="http://restapi.amap.com/v3/geocode/geo?key=yourKey&address="+addr["address"]
      res=requests.get(url)
      data=json.loads(res.text)
      try:
            location=data["geocodes"][0]["location"]
            lng=location.split(",")[0]
            lat=location.split(',')[1]
            obj={
                  "lng":lng,
                  "lat":lat,
                  "count":count
            }
            heatmapData.append(obj)
            count=random.randint(0,99)
                  
           
      except Exception as e:
            pass
print(json.dumps(heatmapData))     
  • 11.上一步骤生成的数据heatmapData数据,如下所示,heatmapData就是生成的数据,其中的<script src="http://webapi.amap.com/maps?v=1.4.1&key=yourkey"></script>中的key值是之前申请的web端的key值,需要替换;<script type="text/javascript"src="http://a.amap.com/jsapi_demos/static/resource/heatmapData.js"></script>是官方的数据,所以需要把它注释。
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>热力图</title>
    <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
    <script src="http://webapi.amap.com/maps?v=1.4.1&key=yourkey"></script>
    <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
    <!-- <script type="text/javascript" src="http://a.amap.com/jsapi_demos/static/resource/heatmapData.js"></script> -->
</head>
<body>
<div id="container"></div>
<div class="button-group">
    <input type="button" class="button" value="显示热力图" onclick="heatmap.show()"/>
    <input type="button" class="button" value="关闭热力图" onclick="heatmap.hide()"/>
</div>
<script>
    var map = new AMap.Map("container", {
        resizeEnable: true,
        center: [113.42, 21.11],
        zoom: 11
    });
    if (!isSupportCanvas()) {
        alert('热力图仅对支持canvas的浏览器适用,您所使用的浏览器不能使用热力图功能,请换个浏览器试试~')
    }
    //详细的参数,可以查看heatmap.js的文档 http://www.patrick-wied.at/static/heatmapjs/docs.html
    //参数说明如下:
    /* visible 热力图是否显示,默认为true
     * opacity 热力图的透明度,分别对应heatmap.js的minOpacity和maxOpacity
     * radius 势力图的每个点的半径大小   
     * gradient  {JSON} 热力图的渐变区间 . gradient如下所示
     *  {
     .2:'rgb(0, 255, 255)',
     .5:'rgb(0, 110, 255)',
     .8:'rgb(100, 0, 255)'
     }
     其中 key 表示插值的位置, 0-1 
     value 为颜色值 
     */
    var heatmap;
    var heatmapData=[{"lng": "113.344297", "lat": "23.116909", "count": 10}, {"lng": "113.255285", "lat": "23.147045", "count": 15}, {"lng": "113.324768", "lat": "23.126375", "count": 85}, {"lng": "113.247621", "lat": "23.122046", "count": 45}, {"lng": "113.263076", "lat": "23.156531", "count": 13}, {"lng": "113.297863", "lat": "23.090452", "count": 19}, {"lng": "113.367010", "lat": "22.936023", "count": 18}, {"lng": "113.614086", "lat": "23.124250", "count": 21}, {"lng": "113.463881", "lat": "23.613052", "count": 76}, {"lng": "113.462326", "lat": "23.612083", "count": 89}, {"lng": "113.322292", "lat": "23.120381", "count": 54}, {"lng": "113.238650", "lat": "23.125353", "count": 84}, {"lng": "113.260708", "lat": "23.149971", "count": 15}, {"lng": "113.289709", "lat": "23.091962", "count": 24}, {"lng": "113.263049", "lat": "23.101094", "count": 81}, {"lng": "113.335138", "lat": "23.142531", "count": 51}, {"lng": "113.277035", "lat": "23.070905", "count": 33}, {"lng": "113.294000", "lat": "23.120102", "count": 15}, {"lng": "113.301446", "lat": "23.043065", "count": 61}, {"lng": "113.365000", "lat": "22.941261", "count": 88}, {"lng": "113.260387", "lat": "23.194563", "count": 34}, {"lng": "113.242210", "lat": "23.191883", "count": 41}, {"lng": "113.339796", "lat": "23.135607", "count": 95}, {"lng": "113.446537", "lat": "23.103905", "count": 84}, {"lng": "113.299427", "lat": "23.064038", "count": 31}, {"lng": "113.541337", "lat": "23.096091", "count": 14}, {"lng": "113.322692", "lat": "23.149840", "count": 92}, {"lng": "113.273030", "lat": "23.101772", "count": 60}, {"lng": "113.180350", "lat": "23.452620", "count": 74}, {"lng": "113.314475", "lat": "22.978454", "count": 70}, {"lng": "113.249971", "lat": "23.142759", "count": 40}, {"lng": "113.389060", "lat": "23.004890", "count": 45}, {"lng": "113.553596", "lat": "23.114428", "count": 81}, {"lng": "113.244756", "lat": "23.131369", "count": 29}, {"lng": "113.284835", "lat": "23.134113", "count": 81}, {"lng": "113.456622", "lat": "23.100665", "count": 43}, {"lng": "113.255386", "lat": "23.157249", "count": 0}, {"lng": "113.325652", "lat": "23.185250", "count": 6}, {"lng": "113.232974", "lat": "23.275054", "count": 86}, {"lng": "113.273070", "lat": "23.229213", "count": 44}, {"lng": "113.372490", "lat": "23.052779", "count": 73}, {"lng": "113.528098", "lat": "23.086268", "count": 86}, {"lng": "113.330781", "lat": "23.025865", "count": 62}, {"lng": "113.300196", "lat": "23.171500", "count": 58}, {"lng": "109.606452", "lat": "27.947055", "count": 19}, {"lng": "113.325165", "lat": "23.133959", "count": 59}, {"lng": "113.248546", "lat": "23.114424", "count": 96}, {"lng": "113.269608", "lat": "23.120831", "count": 92}, {"lng": "113.543056", "lat": "23.109077", "count": 99}, {"lng": "113.269122", "lat": "23.124103", "count": 14}, {"lng": "113.316452", "lat": "23.024521", "count": 85}, {"lng": "113.209898", "lat": "23.375453", "count": 98}, {"lng": "113.447811", "lat": "23.104494", "count": 60}, {"lng": "113.297352", "lat": "23.088238", "count": 62}, {"lng": "113.282220", "lat": "23.138507", "count": 44}, {"lng": "113.318244", "lat": "23.118890", "count": 6}, {"lng": "113.269462", "lat": "22.988878", "count": 4}, {"lng": "113.262418", "lat": "23.192340", "count": 86}, {"lng": "113.308671", "lat": "23.100649", "count": 49}, {"lng": "113.384129", "lat": "22.937244", "count": 78}, {"lng": "113.250547", "lat": "23.154104", "count": 42}, {"lng": "113.349391", "lat": "22.998085", "count": 58}, {"lng": "113.300834", "lat": "22.965850", "count": 86}, {"lng": "113.282794", "lat": "23.126180", "count": 26}, {"lng": "113.294419", "lat": "23.070674", "count": 2}, {"lng": "113.269789", "lat": "23.085739", "count": 66}, {"lng": "113.251090", "lat": "23.148003", "count": 86}, {"lng": "113.363768", "lat": "23.095991", "count": 87}, {"lng": "113.360270", "lat": "22.924257", "count": 63}, {"lng": "113.283977", "lat": "23.212607", "count": 26}, {"lng": "113.303867", "lat": "23.220382", "count": 24}, {"lng": "113.235703", "lat": "23.098592", "count": 6}, {"lng": "113.316440", "lat": "23.089563", "count": 21}, {"lng": "113.366321", "lat": "22.939357", "count": 71}, {"lng": "113.343282", "lat": "23.126684", "count": 12}, {"lng": "113.254382", "lat": "23.157436", "count": 31}, {"lng": "113.334583", "lat": "23.094546", "count": 9}, {"lng": "113.299222", "lat": "23.129942", "count": 3}, {"lng": "113.588847", "lat": "23.547775", "count": 77}, {"lng": "113.615563", "lat": "23.117119", "count": 59}, {"lng": "113.235524", "lat": "23.125298", "count": 49}, {"lng": "113.552734", "lat": "22.801449", "count": 16}, {"lng": "113.270966", "lat": "23.094982", "count": 76}, {"lng": "113.302051", "lat": "23.082745", "count": 71}, {"lng": "113.624833", "lat": "23.121417", "count": 85}, {"lng": "113.283346", "lat": "23.116699", "count": 7}, {"lng": "113.309540", "lat": "23.134975", "count": 72}, {"lng": "113.370909", "lat": "22.927382", "count": 34}, {"lng": "113.308460", "lat": "23.024682", "count": 36}, {"lng": "113.217662", "lat": "23.400648", "count": 13}, {"lng": "113.256276", "lat": "23.205627", "count": 12}, {"lng": "113.347872", "lat": "23.169934", "count": 40}, {"lng": "113.392160", "lat": "23.061045", "count": 52}, {"lng": "113.268618", "lat": "23.123680", "count": 73}, {"lng": "113.253156", "lat": "23.119536", "count": 18}, {"lng": "113.283573", "lat": "23.126606", "count": 45}, {"lng": "113.286083", "lat": "23.125144", "count": 96}, {"lng": "113.368509", "lat": "23.193679", "count": 98}, {"lng": "113.323131", "lat": "23.150875", "count": 31}, {"lng": "113.284489", "lat": "23.123461", "count": 67}, {"lng": "113.398191", "lat": "22.940600", "count": 47}, {"lng": "113.235296", "lat": "23.155994", "count": 38}, {"lng": "113.234615", "lat": "23.093300", "count": 38}, {"lng": "113.210399", "lat": "23.382780", "count": 22}, {"lng": "113.352892", "lat": "23.152066", "count": 5}, {"lng": "113.258944", "lat": "23.147074", "count": 54}, {"lng": "113.831132", "lat": "23.287869", "count": 82}, {"lng": "113.327030", "lat": "23.132175", "count": 41}, {"lng": "113.241514", "lat": "23.113359", "count": 56}, {"lng": "113.271012", "lat": "22.992079", "count": 66}, {"lng": "113.272194", "lat": "22.992170", "count": 40}, {"lng": "113.257335", "lat": "23.132882", "count": 81}, {"lng": "113.329101", "lat": "23.133815", "count": 53}, {"lng": "113.320880", "lat": "23.140285", "count": 6}, {"lng": "113.333884", "lat": "23.150294", "count": 49}, {"lng": "113.321919", "lat": "23.181423", "count": 53}, {"lng": "113.324509", "lat": "23.149567", "count": 35}, {"lng": "113.258459", "lat": "23.140391", "count": 54}, {"lng": "113.815286", "lat": "23.276029", "count": 26}, {"lng": "113.215031", "lat": "23.389067", "count": 87}, {"lng": "113.332296", "lat": "23.117923", "count": 83}, {"lng": "113.488165", "lat": "22.955235", "count": 1}, {"lng": "113.401881", "lat": "23.117567", "count": 30}, {"lng": "113.306606", "lat": "23.389744", "count": 81}, {"lng": "113.311409", "lat": "23.118796", "count": 1}, {"lng": "113.275931", "lat": "23.090655", "count": 35}, {"lng": "113.271369", "lat": "23.126377", "count": 93}, {"lng": "113.247865", "lat": "23.114291", "count": 27}, {"lng": "113.256215", "lat": "23.125588", "count": 2}, {"lng": "113.256408", "lat": "23.146402", "count": 55}, {"lng": "113.583451", "lat": "23.158577", "count": 69}, {"lng": "113.411370", "lat": "22.938276", "count": 5}, {"lng": "113.250678", "lat": "23.179862", "count": 16}, {"lng": "113.321493", "lat": "23.095726", "count": 40}, {"lng": "113.317800", "lat": "22.968926", "count": 80}, {"lng": "113.278617", "lat": "23.085906", "count": 64}, {"lng": "113.276507", "lat": "23.139743", "count": 95}, {"lng": "113.320869", "lat": "23.129781", "count": 14}, {"lng": "113.366447", "lat": "22.942831", "count": 85}, {"lng": "113.268041", "lat": "23.123271", "count": 20}, {"lng": "113.227183", "lat": "23.336593", "count": 67}, {"lng": "113.309608", "lat": "23.038149", "count": 45}, {"lng": "113.254532", "lat": "23.111647", "count": 59}, {"lng": "113.268608", "lat": "23.161141", "count": 78}, {"lng": "113.255292", "lat": "23.148573", "count": 19}, {"lng": "113.344294", "lat": "23.139680", "count": 36}, {"lng": "113.229607", "lat": "23.077701", "count": 57}, {"lng": "113.380320", "lat": "23.169490", "count": 50}, {"lng": "113.366976", "lat": "23.122129", "count": 33}, {"lng": "113.360126", "lat": "22.942308", "count": 9}, {"lng": "113.231365", "lat": "23.396937", "count": 22}, {"lng": "113.380121", "lat": "23.126316", "count": 52}, {"lng": "113.366422", "lat": "23.097340", "count": 65}, {"lng": "113.248850", "lat": "23.149828", "count": 66}, {"lng": "113.155865", "lat": "23.461858", "count": 21}, {"lng": "113.264872", "lat": "23.115949", "count": 64}, {"lng": "113.270800", "lat": "23.106228", "count": 25}, {"lng": "113.833711", "lat": "23.291508", "count": 72}, {"lng": "113.329352", "lat": "23.126755", "count": 4}, {"lng": "113.366374", "lat": "23.193615", "count": 28}, {"lng": "118.593178", "lat": "24.779516", "count": 12}, {"lng": "113.360699", "lat": "22.960386", "count": 47}, {"lng": "113.345624", "lat": "22.919752", "count": 36}, {"lng": "113.271486", "lat": "23.135351", "count": 85}, {"lng": "113.324870", "lat": "23.117240", "count": 5}, {"lng": "113.323427", "lat": "23.141790", "count": 87}, {"lng": "113.241537", "lat": "23.141126", "count": 64}, {"lng": "113.362274", "lat": "23.102131", "count": 52}, {"lng": "113.295731", "lat": "23.334532", "count": 47}, {"lng": "113.222511", "lat": "23.149323", "count": 28}, {"lng": "113.818710", "lat": "23.284146", "count": 21}, {"lng": "113.235123", "lat": "23.079684", "count": 84}, {"lng": "113.269272", "lat": "23.160980", "count": 93}, {"lng": "113.526406", "lat": "23.064399", "count": 0}, {"lng": "113.343282", "lat": "23.135565", "count": 53}, {"lng": "113.258579", "lat": "23.140074", "count": 13}, {"lng": "113.360977", "lat": "23.118423", "count": 21}, {"lng": "113.328452", "lat": "23.161193", "count": 97}, {"lng": "113.264268", "lat": "23.153607", "count": 24}, {"lng": "113.301787", "lat": "23.142534", "count": 92}, {"lng": "113.248687", "lat": "23.147135", "count": 44}, {"lng": "113.266339", "lat": "23.092767", "count": 39}, {"lng": "113.338505", "lat": "23.133761", "count": 65}, {"lng": "113.310500", "lat": "23.151311", "count": 38}, {"lng": "113.263700", "lat": "23.125793", "count": 3}, {"lng": "113.296589", "lat": "23.069412", "count": 11}, {"lng": "113.303936", "lat": "23.386881", "count": 54}, {"lng": "113.317908", "lat": "23.123600", "count": 92}, {"lng": "113.241407", "lat": "23.118272", "count": 28}, {"lng": "113.255012", "lat": "23.161287", "count": 17}, {"lng": "113.209108", "lat": "23.377696", "count": 48}, {"lng": "113.261903", "lat": "23.113833", "count": 83}, {"lng": "113.247178", "lat": "23.126325", "count": 14}, {"lng": "113.327030", "lat": "23.132175", "count": 55}, {"lng": "113.328126", "lat": "23.143379", "count": 82}, {"lng": "113.603260", "lat": "23.127827", "count": 62}, {"lng": "113.409831", "lat": "23.124441", "count": 75}, {"lng": "113.506830", "lat": "23.155410", "count": 26}, {"lng": "113.349340", "lat": "23.007035", "count": 44}, {"lng": "113.204213", "lat": "23.386709", "count": 10}, {"lng": "113.228411", "lat": "23.089877", "count": 73}, {"lng": "113.454664", "lat": "22.884362", "count": 11}, {"lng": "113.357739", "lat": "23.292417", "count": 89}, {"lng": "113.589801", "lat": "23.532832", "count": 40}];
    map.plugin(["AMap.Heatmap"], function() {
        //初始化heatmap对象
        heatmap = new AMap.Heatmap(map, {
            radius: 25, //给定半径
            opacity: [0, 0.8]
            /*,gradient:{
             0.5: 'blue',
             0.65: 'rgb(117,211,248)',
             0.7: 'rgb(0, 255, 0)',
             0.9: '#ffea00',
             1.0: 'red'
             }*/
        });
        //设置数据集:该数据为北京部分“公园”数据
        heatmap.setDataSet({
            data: heatmapData,
            max: 100
        });
    });
    //判断浏览区是否支持canvas
    function isSupportCanvas() {
        var elem = document.createElement('canvas');
        return !!(elem.getContext && elem.getContext('2d'));
    }
</script>
</body>
</html>
    1. 上一步的html使用浏览器打开浏览,如图所示。如果遇到打开不是位于广东地区,那应该设置上面html文件的center里面的经纬度值为广东地区就可以直接浏览到热力图:
麦当劳广州门店分布热力图
  • 总结:从上面的热力图可以看出,麦当劳的门店主要集中分布在荔湾区、海珠区、天河区,其他分布比较零散。而且麦当劳门店分布大部分处于干路旁或商业大厦,商场。

如果需要查看源码,可以直接访问 github源码地址,如果喜欢,可以给个star哟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容