Randomize Marker Position on Folium Maps

  • Share this:

Code introduction


This function creates a random marker on a Folium map object, with the position determined by an initial position and a random distance.


Technology Stack : Folium

Code Type : Folium map customization

Code Difficulty : Intermediate


                
                    
def randomize_marker_position(map_obj, initial_position, random_distance):
    """
    This function adds a random marker to a Folium map object at a position
    around the initial position by a given distance.
    """
    from math import radians, sin, cos, sqrt, atan2
    from folium import CircleMarker

    # Convert initial position to radians
    lat, lon = map_obj.get_latlng()
    lat_rad = radians(lat)
    lon_rad = radians(lon)

    # Calculate new position based on random distance and bearing
    bearing = random_distance / 1000  # Convert distance to kilometers
    distance = random_distance
    earth_radius_km = 6371  # Earth's radius in kilometers

    # Calculate change in latitude and longitude
    dlat = distance * cos(bearing)
    dlon = distance * sin(bearing)

    # New position
    new_lat = lat + dlat / earth_radius_km
    new_lon = lon + dlon / (earth_radius_km * cos(lat_rad))

    # Create a new marker at the new position
    new_marker = CircleMarker([new_lat, new_lon], radius=10, color='blue', fill=True, fill_color='blue')
    map_obj.add_child(new_marker)

    return map_obj                
              
Tags: