添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Python坐标点在地图上展示基于folium

Python坐标点在地图上展示基于folium

上次已经批量获取了地图上的坐标点。如果你还没看,可以点击查看如何批量查询地点的坐标基于腾讯地图。

导入包

import pandas as pd 
import folium

创建地图图层

#创建地图
m = folium.Map(location=[39.91, 116.40],   #中心坐标
               zoom_start=12,              #地图等级
#地图瓦片,这里用的是腾讯地图的,没有找到腾讯地图其他的。如果谁有请给我一个。
               tiles='http://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=6',
               attr='default')

先不着急批量展示,先在地图上展示一个。没问题之后,一个for循环就能解决问题。

folium.Marker(location=[39.95,116.50],
              popup='<s>测试按钮').add_to(m)
m

看来已经成功了,那么开始批量吧。由于点太多,我想把离得近的点自动聚合。并且点击时标签横向显示。

完整代码

import pandas as pd
import folium
from folium.plugins import MarkerCluster
data=pd.read_csv('小区地址.csv',encoding='gbk',index_col='索引')    #读取文件
m = folium.Map(location=[39.91, 116.40], #地图中心点
               zoom_start=12,            #初始地图等级
               #腾讯地图瓦片
    tiles='http://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=6',
               #默认参数
    attr='default')
#创建聚合
marker_cluster =MarkerCluster().add_to(m)
#for循环添加标记点
for i in range(len(data)):
    folium.Marker(location=[data.loc[i,'纬度'], data.loc[i,'经度']],  #坐标用[纬度,经度]
                  popup=folium.Popup(data.loc[i,'小区名'], 
                                     parse_html=True, 
                                     max_width=100)                #提示语横向完全显示      
                 ).add_to(marker_cluster)
m.save('小区全部坐标.html')                                        #保存到当前目录下

当然我们还可以加上分组,让筛选更方便。

import pandas as pd
import folium
from folium.plugins import MarkerCluster
from folium import FeatureGroup,LayerControl
tile='http://rt1.map.gtimg.com/realtimerender?z={z}&x={x}&y={-y}&type=vector&style=0'
df =pd.read_csv('小区完整版.csv')
distriction=df['区'].drop_duplicates()
m = folium.Map(location=[39.91, 116.40], #地图中心点
               tiles=None,
               control_scale=True,       #显示比例尺
               zoom_start=12)            #初始等级
folium.TileLayer(tiles=tile,attr='default',name='腾讯地图').add_to(m) #地图瓦片添加命名
# #创建组
for i in distriction:  
    exec(str(i)+' = '+'FeatureGroup(name="'+str(i)+'",show=False).add_to(m)')
#创建聚合
for j in distriction: 
    exec(str(j)+'mc = '+ 'MarkerCluster().add_to('+str(j)+')' )
#for循环添加标记点
for k in range(len(df)):
    exec('''folium.Marker(location=[df.loc[k,'纬度'], df.loc[k,'经度']],  
                  popup=folium.Popup(df.loc[k,'小区名'], 
                                     parse_html=True,