Java / Javascript Рассчитать подходящие границы SW / NE с расположением пользователя в центре - PullRequest
0 голосов
/ 25 января 2012

То, что я пытаюсь сделать, - это попытаться вычислить SW, NE для указанных местоположений, а затем дельта с расположением в центре пользователя.что приведет к подгонке всех местоположений и местоположения пользователя в центре.

, но, к сожалению, не работает ни одно быстрое предложение?

public void calculateMapFitBounds(GeoLocation userLocation, List<GeoLocation > contents, Map<String, GeoLocation> latlngBounds){

        //SW
        double minLat = userLocation.getLatitude();
        double minLng = userLocation.getLongitude();

        //NE
        double maxLat = -9999;
        double maxLng = -9999;

        for(GeoLocation content: contents){

            /*
             * Populating Top left cordinate (SW)
             */
            minLat = Math.min(minLat, content.getLatitude());
            minLng = Math.min(minLng, content.getLongitude());

            /*
             * Populating Bottom right cordinate (NE)
             */
            maxLng = Math.max(maxLng, content.getLongitude()) ;
            maxLat = Math.max(maxLat, content.getLatitude());
        }

        /*
         * Calculating Delta fit bounds
         */

        double latDelta = Math.max(Math.abs(minLat - userLocation.getLatitude()), Math.abs(maxLat-userLocation.getLatitude()));

        double lngDelta = Math.max(Math.abs(maxLng - userLocation.getLongitude()), Math.abs(minLng - userLocation.getLongitude()));

        //Calculating SW
        minLat = userLocation.getLatitude()+ latDelta;
        minLng = userLocation.getLongitude()+ lngDelta;

        latlngBounds.put("swLatLng", new GeoLocation(minLat, minLng));


        //Calculating NE
        maxLat = userLocation.getLatitude()- latDelta;
        maxLng = userLocation.getLongitude()-lngDelta;

        latlngBounds.put("neLatLng", new GeoLocation(maxLat, maxLng));

    }

Позже в javascript я хочу использовать следующее

var swLatLn = new google.maps.LatLng($!swLatLng.latitude, $!swLatLng.longitude, false);
        var neLatLn = new google.maps.LatLng($neLatLng.latitude, $neLatLng.longitude, false);

        var bounds = new google.maps.LatLngBounds(swLatLn, neLatLn);
        googleMap.fitBounds(bounds);

1 Ответ

0 голосов
/ 25 января 2012

Неправильные знаки (ниже они исправлены):

//Calculating SW
minLat = userLocation.getLatitude() - latDelta;
minLng = userLocation.getLongitude()- lngDelta;


//Calculating NE
maxLat = userLocation.getLatitude() + latDelta;
maxLng = userLocation.getLongitude()+ lngDelta;

Но вы обязательно должны сказать, в чем проблема и есть ли сообщения об ошибках в консоли ошибок браузера.

ps: есть более простой способ для API v3 https://stackoverflow.com/a/2205577/1164491

...