2015-11-06 104 views
2

我有一个脚本来通过叶片在地图上绘制多个点。有没有办法改变标记和颜色的形状?叶片地图中的更改标记

它可以通过Python代码或html file完成无关紧要。

import folium 
import json 


map_osm = folium.Map(location=[37.7622, -122.4356], zoom_start=13) 

geojson = { 
    "type": "Feature", 
    "geometry": { 
     "type": "MultiPoint", 
     "coordinates": [[-122.42436302145, 37.8004143219856], [-122.42699532676599, 37.80087263276921]], 
    }, 
    "properties": {"prop0": "value0"} 
} 

map_osm.geo_json(geo_str=json.dumps(geojson)) 
map_osm.create_map(path='osm.html') 

enter image description here

回答

0

您可能会发现更容易单独创建标记,而不是首先构建一个GeoJSON的对象。这很容易给你的风格它们的能力,按照这个例子:

map_1 = folium.Map(location=[45.372, -121.6972], zoom_start=12,tiles='Stamen Terrain') 
map_1.simple_marker([45.3288, -121.6625], popup='Mt. Hood Meadows',marker_icon='cloud') 
+0

我刚刚为这个问题创建了一个例子,我的实际数据包含了两千多个点。 – Leb

0

你可以尝试这样的事:

for i in range(0,len(data)): 
folium.Marker([data['lat'][i], data['long'][i]], 
      #Make color/style changes here 
      icon = folium.Icon(color='green'), 
     ).add_to(map_1) 
1

下面是我如何绘制用点。我实际上正在努力拼凑一个notebook of examples (adding color, popup, etc),尽管我仍在摸索中。

import folium 
import pandas as pd 

#create a map 
this_map = folium.Map(prefer_canvas=True) 

def plotDot(point): 
    '''input: series that contains a numeric named latitude and a numeric named longitude 
    this function creates a CircleMarker and adds it to your this_map''' 
    folium.CircleMarker(location=[point.latitude, point.longitude], 
         radius=2, 
         weight=0).add_to(this_map) 

#use df.apply(,axis=1) to "iterate" through every row in your dataframe 
data.apply(plotDot, axis = 1) 


#Set the zoom to the maximum possible 
this_map.fit_bounds(this_map.get_bounds()) 

#Save the map to an HTML file 
this_map.save('html_map_output/simple_dot_plot.html') 

this_map 

您也可以使用polygon markers that this guy shows off