0

Ce que j'essaie de faire est d'essayer de calculer SW, NE d'emplacements donnés, puis delta avec l'emplacement du centre de l'utilisateur. ce qui se traduira par fitbounds tous les emplacements et l'emplacement de l'utilisateur dans le centre.Java/Javascript Calculer les raccordements SW/NE avec l'emplacement de l'utilisateur au centre

mais malheureusement, il ne fonctionne pas une suggestion rapide?

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)); 

    } 

plus tard javascript je veux utiliser comme suit

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); 
+0

Dans quel sens est-il "ne fonctionne pas"? Ne pas compiler, donner une erreur d'exécution, donner des résultats inattendus, ou ...? Est-ce la partie Java qui ne fonctionne pas ou la partie JavaScript? (Ou les deux?) Le JavaScript semble invalide, en particulier vous ne pouvez pas avoir des points d'exclamation dans les noms de variables comme vous l'avez fait avec '$! SwLatLng'. – nnnnnn

+0

affichant la terre entière –

+0

$ indique que j'utilise des vues de vitesse –

Répondre

0

Wrong signe (ci-dessous, ils sont corrigés):

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


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

Mais vous devriez certainement dire quel est le problème et si il y a des messages d'erreur dans la console d'erreur du navigateur.

ps: il existe un moyen plus facile pour les API v3 https://stackoverflow.com/a/2205577/1164491

+0

problème était il montre toute la terre –

+0

@Faisal khan Avez-vous un lien vers la page? Ou vérifiez les valeurs des variables calculées par vous-même. Btw, regardez ici - API 3 permet de le faire automatiquement http://stackoverflow.com/questions/1556921/google-map-api-v3-set-bounds-and-center – Cheery

+0

Cela fonctionne parfaitement maintenant merci :) –