From 76e42e70434e47980de1a2dee0d5c10b961fe49a Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 23 Sep 2019 12:21:03 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8DgetMapCenter=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 256abb016..933b0bf8a 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -428,12 +428,13 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa task.GetResult(0) } // if mapLimit { - // retVal.TotalCount = len(retVal.Stores) + // retVal.TotalCount = len(retVal.Stores)f // } } else { // dao.Rollback(db) } - if mapLimit && len(retVal.Stores) > 0 { + retVal.Stores = append(retVal.Stores, &StoreExt{}) + if len(retVal.Stores) > 0 { retVal.MapCenterLng, retVal.MapCenterLat = getMapCenter(retVal.Stores) } return retVal, err @@ -483,18 +484,16 @@ func getMapCenter(storeList []*StoreExt) (lng, lat float64) { lngAvg = lngAvg / storeListLenFloat latAvg = latAvg / storeListLenFloat - lngMean := float64(0) - latMean := float64(0) + distAvg := float64(0) for _, store := range storeList { - lngMean += (store.FloatLng - lngAvg) * (store.FloatLng - lngAvg) - latMean += (store.FloatLat - latAvg) * (store.FloatLat - latAvg) + distAvg += math.Sqrt((store.FloatLng-lngAvg)*(store.FloatLng-lngAvg) + (store.FloatLat-latAvg)*(store.FloatLat-latAvg)) } - lngMean = math.Sqrt(lngMean / storeListLenFloat) - latMean = math.Sqrt(latMean / storeListLenFloat) + distAvg = (distAvg / storeListLenFloat) + maxDist := distAvg * 5 newStoreList := []*StoreExt{} for _, store := range storeList { - if store.FloatLng >= lngMean-lngAvg && store.FloatLng <= lngMean+lngAvg && - store.FloatLat >= latMean-latAvg && store.FloatLat <= latMean+latAvg { + dist := math.Sqrt((store.FloatLng-lngAvg)*(store.FloatLng-lngAvg) + (store.FloatLat-latAvg)*(store.FloatLat-latAvg)) + if dist < maxDist { lng += store.FloatLng lat += store.FloatLat newStoreList = append(newStoreList, store)