Python folium draw map

I have used multiple map packages before and after, and finally I still feel that folium is easy to use. It calls third-party map layers in real time to describe, and the operation is relatively smooth.

import folium

#获取地图基底
#0:googleMap, 1: 高德地图,2:腾讯地图
def getMapObject(baseSource=1, centerLoc=[0, 0], baseLayerTitle='baseLayer'):
    if baseSource == 0:
        m = folium.Map(location=centerLoc,
                       min_zoom=0,
                       max_zoom=19,
                       zoom_start=5,
                       control=False,
                       control_scale=True
                       )

    elif baseSource == 1:
        #下面的程式将使用高德地图作为绘图的基底
        m = folium.Map(location=centerLoc,
                       zoom_start=5,
                       control_scale=True,
                       control=False,
                       tiles=None
                       )

        folium.TileLayer(tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
                         attr="&copy; <a href=http://ditu.amap.com/>高德地图</a>",
                         min_zoom=0,
                         max_zoom=19,
                         control=True,
                         show=True,
                         overlay=False,
                         name=baseLayerTitle
                         ).add_to(m)
    else:
        #下面的程式将使用腾讯地图作为绘图的基底
        m = folium.Map(location=centerLoc,
                       zoom_start=5,
                       control_scale=True,
                       control=False,
                       tiles=None
                       )

        folium.TileLayer(tiles='http://rt{s}.map.gtimg.com/realtimerender?z={z}&x={x}&y={y}&type=vector&style=0',
                         attr="&copy; <a href=http://map.qq.com/>腾讯地图</a>",
                         min_zoom=0,
                         max_zoom=19,
                         control=True,
                         show=True,
                         overlay=False,
                         name=baseLayerTitle
                         ).add_to(m)
    return m

# 用上面大佬写好的方法去调用高德地图或者腾讯地图
b_folium = getMapObject(baseSource=1, centerLoc=[30.174012, 120.214066])

# 下面可以在地图上不同的电放不同的颜色 
# df_ss里有四列,'eci', 'latitude', 'longitude', 'target'
#               标识符   纬度        经度          分类
color_ = ['cadetblue', 'lightgreen', 'red', 'white', 'black', 'pink', 'beige', 'darkblue', 'purple', 'darkred', 'darkgreen', 'lightgray', 'blue', 'lightred', 'orange', 'green', 'gray', 'darkpurple', 'lightblue']
for index, j in enumerate(df_ss['target'].value_counts().index):
    df_tt = df_ss[df_ss['target']==j]
    for i in df_tt.iterrows():
        folium.Marker(
            location=[i[1]['latitude'], i[1]['longitude']],
            popup= f'{
      
      i[0]}',
            icon=folium.Icon(color=color_[index], icon='info-sign')
        ).add_to(b_folium)

The renderings are as follows

insert image description here

Guess you like

Origin blog.csdn.net/u010095372/article/details/130600343