Django-leaflet has reversed LngLat instead of LatLng

847 Views Asked by At

While trying to put a marker on django-leaflet, my marker reverses (Lat, Lng) to (Lng,Lat) in GeoDjango admin using django-leaflet. How can I correct admin.py widget form to Lat, Lng coordinates?

from django.contrib import admin
from django.contrib.gis.db import models as geo_models
from leaflet.admin import LeafletGeoAdmin
from .models import Apartment,User
from django.contrib.auth.admin import UserAdmin
from leaflet.forms.widgets import LeafletWidget


LEAFLET_WIDGET_ATTRS = {
    'map_height': '500px',
    'map_width': '100%',
    'display_raw': 'true',
    'map_srid': 4326,
}


LEAFLET_FIELD_OPTIONS = {'widget': LeafletWidget(attrs=LEAFLET_WIDGET_ATTRS)}

FORMFIELD_OVERRIDES = {
    geo_models.PointField: LEAFLET_FIELD_OPTIONS,
    geo_models.MultiPointField: LEAFLET_FIELD_OPTIONS,
    geo_models.LineStringField: LEAFLET_FIELD_OPTIONS,
    geo_models.MultiLineStringField: LEAFLET_FIELD_OPTIONS,
    geo_models.PolygonField: LEAFLET_FIELD_OPTIONS,
    geo_models.MultiPolygonField: LEAFLET_FIELD_OPTIONS,
}
2

There are 2 best solutions below

1
Muhammad Faizan Fareed On

Their is no need to change this because latitude and longitude values remain always same. Google map using (Long, lat) and leaflet using (lat,long).

0
Kaleab Woldemariam On

Apparently, GeoDjango uses x, y (longitude, latitude) coordinate pairs while leaflet uses (lat, lng), this caused the reversed coordinates.Apparently, I tried a leaflet method coordslatlng, but there was no need to, as L.geoJSON takes (lng,lat) coordinate pairs. It is still unclear to me how i end up switching the positions.