Я использую карту Google, и я хотел бы запросить мой SQL, чтобы найти все точки внутри ограничительной рамки.
На карте Google я использую этот JavaScript для получения ограничивающего прямоугольника
var bounds = map.getBounds();
var ne = bounds.getNorthEast(), sw = bounds.getSouthWest();
var args = {
NW: { lat: ne.lat(), lng: sw.lng() },
NE: { lat: ne.lat(), lng: ne.lng() },
SE: { lat: sw.lat(), lng: ne.lng() },
SW: { lat: sw.lat(), lng: sw.lng() },
}; //NW = North-West, NE = North-East, SE = South-East, SW = South-West
Затем я использую LINQ для выбора всех мест в моей базе данных SQL:
//nw = North-West, ne = North-East, se = South-East, sw = South-West
double minLat = Math.Min(nw.Lat, Math.Min(ne.Lat, Math.Min(se.Lat, sw.Lat)));
double maxLat = Math.Max(nw.Lat, Math.Max(ne.Lat, Math.Max(se.Lat, sw.Lat)));
double minLng = Math.Min(nw.Lng, Math.Min(ne.Lng, Math.Min(se.Lng, sw.Lng)));
double maxLng = Math.Max(nw.Lng, Math.Max(ne.Lng, Math.Max(se.Lng, sw.Lng)));
return (from rec in tblPlaces.AsNoTracking()
where (rec.Lat >= minLat) && (rec.Lat <= maxLat) && (rec.Lng >= minLng) && (rec.Lng <= maxLng)
select rec).ToList<tblPlace>();
Он хорошо работает, когда он находится на довольно большом увеличении (Google zoom <= 15). Но при уменьшении размера страны (т. Е. Вы можете видеть всю страну), он не находит точку в моей базе данных. </p>
При отладке я обнаружил, что значение долготы намного меньше, чем любая точкав моей базе данных. Как это возможно? Я уменьшил масштаб, чтобы увидеть всю страну.
Является ли неправильный способ выбора широты и долготы?