folium :: сделать поисковый маркер GeoJson прозрачным - PullRequest
0 голосов
/ 23 марта 2019

У меня есть основная фолиевая тепловая карта, которая показывает местоположения в виде CircleMarker и слой HeatMap сверху, как показано ниже.

enter image description here

Я хотел добавить поискфункциональность в моей карте, поэтому я преобразовал свой фрейм данных pandas в формат GeoJson, чтобы я мог передать его.

class folium.plugins.Search (layer, search_label = None, search_zoom = None, geom_type = 'Point ', position =' topleft ', placeholder =' Search ', свернутый = False, ** kwargs) Основы: branca.element.MacroElement

Добавляет инструмент поиска на вашу карту.

Параметры: layer (GeoJson, TopoJson, FeatureGroup, объект класса MarkerCluster.) - Слой карты для индексации в

Мне удалось преобразовать мой Pandas DataFrame в GeoJson, используя приведенный ниже код.

df_json = pd.read_csv("C:\\py\\folium\\NE Task 1\\json.csv").dropna(how="any")

# convert lat-long to floats and change address from ALL CAPS to Regular Capitalization
df_json['latitude'] = df_json['latitude'].astype(float)
df_json['longitude'] = df_json['longitude'].astype(float)
df_json['Site Name'] = df_json['Site Name'].str.title()


# we don't need all those columns - only keep useful ones
useful_cols = ['Site ID', 'Site Name', 'latitude', 'longitude']
df_subset = df_json[useful_cols]

# drop any rows that lack lat/long data
df_geo = df_subset.dropna(subset=['latitude', 'longitude'], axis=0, inplace=False)


def df_to_geojson(df_json, properties, lat='latitude', lon='longitude'):

    geojson = {'type': 'FeatureCollection', 'features': []}

    # loop through each row in the dataframe and convert each row to geojson format
    for _, row in df_json.iterrows():
        # create a feature template to fill in
        feature = {'type': 'Feature',
                   'properties': {},
                   'geometry': {'type': 'Point', 'coordinates': []}}


        # fill in the coordinates
        feature['geometry']['coordinates'] = [row[lon], row[lat]]

        # for each column, get the value and add it as a new feature property
        for prop in properties:
            feature['properties'][prop] = row[prop]

        # add this feature (aka, converted dataframe row) to the list of features inside our dict
        geojson['features'].append(feature)

    return geojson


geojson_dict = df_to_geojson(df_geo, properties=useful_cols)
geojson_str = json.dumps(geojson_dict, indent=2)


folium.plugins.Search(data=geojson_dict, geom_type='Point',
                      search_zoom=14, search_label='Site ID').add_to(map)

После выполнения этой функции поиска работает должным образом, как я хотел, но на ТОПе отображается маркер, который я не могу скрыть, как показано ниже.

enter image description here

Пожалуйста, помогите мне руководство, как я могуИдея этого маркера и сохранить GeoJson нетронутым, чтобы я мог использовать его для функции поиска.Я пытался сделать его прозрачным, изменить непрозрачность GeoJson с помощью решений, которые я нашел через stackOverflow, но ничего не работает.

Заранее спасибо за ваше время и извините за длинный пост.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 01 мая 2019

Как правило,

, если вы добавляете folium.LayerControl().add_to(map) на карту, то это обеспечивает функциональность для отображения или скрытия ваших маркеров Geojson.Затем вы можете скрыть или отобразить маркеры, используя show=False или значок «Слои» в правом верхнем углу карты (см. Изображение ниже)

Например:

# creating folium GeoJson objects from out GeoDataFrames
pointgeo = folium.GeoJson(gdf,name='group on map', show=False,
                      tooltip=folium.GeoJsonTooltip(fields=['Name', 'Relation', 'City'], aliases=['Name','Relation', 'City'],
                        localize=True)).add_to(map)

# To Add a LayerControl add below line
folium.LayerControl().add_to(map)

map

Как вэти изображения Маркер отображается или скрывается путем управления слоем сверху справа «Слои» - 1) с маркерами 2) скрытые маркеры

with markers

hidden markers

Вы можете обратиться к этой ссылке для получения дополнительной информации: Folium_search

Надеюсь, это поможет !!

...