J'essaie de placer des marqueurs sur une carte statique (non google) basée sur le code postal.
Ceci est mon code html:AngularJS - Filtre avec Mysql
<div ng-controller="DealerMarkerListCtrl">
<a href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.left}}px;top:{{marker.top}}px" ng-repeat="marker in dealer|zipFilter:countryLookup"></a>
</div>
Maintenant, j'essaie d'afficher tous les marqueurs qui sont filtrés par le code postal et le pays, voici le menu déroulant:
<input type="text" name="plz" placeholder="PLZ (z.B 80469)" class="plz" ng-model="zipCodeLookup">
<select name="drop" tabindex="1" class="drop" id="dropcountry" ng-model="countryLookup" ng-options='option.value as option.name for option in typeOptions'>
</select>
Je suis le filtre suivant:
app.filter("zipFilter", function() { return function(markers, country, zip) {
var retMarkers = [];
for(var i = 0, len = markers.length; i < len; ++i) {
var singleMarker = markers[i];
if(singleMarker.land == country) {
retMarkers.push(singleMarker);
}
}
return retMarkers;
}});
Le principal problème est le suivant:
J'ai fait une recherche dans un cercle où j'obtiens tous les codes postaux à moins de 20 (km/miles) autour du code postal de l'utilisateur. Cela fonctionne bien. Je reçois un JSON comme ça, quand j'accéder directement au cadre (pas dans le contrôleur):
{"plz":["44787","44789","44791","44793","44795","44797","44799","44801","44803","44805","44807","44809","44866","44867","44869","44879","44892","44894","45525","45527","45529","45549"]}
pour le code postal « 45525 ».
Maintenant, j'ai besoin d'afficher tous les marqueurs (concessionnaires) qui sont dans cette rangée de codes postaux.
Le paramètre zip avec le paramètre country dans le filtre doit être envoyé à la fonction "area search" "files/framework/umkreis /: zip /: country" pour obtenir le zip json de la zone.
Ensuite, j'ai besoin de vérifier si certains des marqueurs sont dans ce json et les filtrer.
Je ne sais pas, comment construire ce genre de choses dans mon filtre. Pouvez-vous m'aider à ce sujet? Merci beaucoup.
Autres informations utiles:
Route & Service:
app.factory('dealerService', ['$resource', '$http', '$rootScope', function($resource, $http, $rootScope){
return {
//the resource provider interacting with the PHP backend
api:
$resource('files/framework/dealer/:id', {}, {
update: {method:'PUT'}
}),
}
}])
app.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/dealer/:id', {templateUrl: 'files/tpl/dealer-details.html', controller: 'DealerDetailsCtrl'}).
otherwise({redirectTo: '/dealer'});
}]);
La route vers le cadre "Slim" pour obtenir la zone-zipcodes est:
files/framework/umkreis/45525/DE
or
files/framework/umkreis/:zip/:country
J'ai maintenant créé une fonction php personnalisée, qui a comme paramètre le userZip et le pays. Il obtient la zone autour de la fermeture éclair donnée autour de 20 km. Après cela, je vérifie, si le zip du revendeur est dans le tableau des codes postaux de la zone. La sortie (en ce moment) sont les codes postaux du revendeur filtré. Voici la méthode: http://pastebin.com/pMf33c9j - Comment puis-je utiliser cette fonction, pour définir le marqueur? Je ne peux pas filtrer, c'est sûr ... non? – Marek123