2013-01-03 70 views
0

我嘗試在基於郵政編碼的靜態(非谷歌)地圖上設置標記。
這是我的html代碼:AngularJS - 使用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> 

現在我嘗試顯示了由郵政編碼和國家過濾所有標記,這裏的下拉:

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

我得到了以下過濾器:

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

的主要問題是:
我得到了一個外接圓搜索,我可以在用戶郵編附近的20(公里/英里)範圍內獲得所有郵編。這工作正常。當我直接訪問框架(不在控制器內)時,我得到了一個json:

{"plz":["44787","44789","44791","44793","44795","44797","44799","44801","44803","44805","44807","44809","44866","44867","44869","44879","44892","44894","45525","45527","45529","45549"]} 

爲郵政編碼「45525」。

現在我需要顯示在這個zipcodes數組中的所有標記(經銷商)。
壓縮參數以及過濾器中的國家參數需要發送到「區域搜索」功能「files/framework/umkreis /:zip /:country」以獲取該區域的zip json。
之後我需要檢查一些標記是否在這個json中並過濾它們。

我只是不知道,如何建立這個東西到我的過濾器。你能幫我解決嗎?非常感謝你。

其他有用的信息:
路線&服務:

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'}); 
}]); 

的 「修身」 框架的路線到達該地區,郵編是:

files/framework/umkreis/45525/DE 
or 
files/framework/umkreis/:zip/:country 
+0

我現在已經創建了一個自定義php函數,它具有userZip和country作爲參數。它得到了20公里左右給定拉鍊周圍的區域。之後,我檢查,如果經銷商的郵編是在區域郵編的陣列。輸出(現在)是過濾的經銷商郵編。這裏是方法:http://pastebin.com/pMf33c9j - 如何使用此功能來設置標記?我無法過濾,這是肯定的...對嗎? – Marek123

回答

2

它看起來就像您試圖根據表單中的兩個字段更新地圖上的標記一樣:「zipCodeLookup」和「countryLookup」 。

<input ... ng-model="zipCodeLookup" ... /> 
<select ... ng-model="countryLookup" ... ></select> 

的標誌顯示在下面的控制器:

<div ng-controller="DealerMarkerListCtrl"></div> 

並且正在使用這條路線從您的PHP服務器收集JSON

files/framework/umkreis/:zip/:country 

你需要做的是什麼在「DealerMarkerListCtrl」控制器中指定一個函數,該函數將取得一個郵政編碼和一個國家,並使用來自服務器的新JSON更新經銷商。

$scope.updateDealer = function(zip, country) { 
    $http.get('files/framework/umkreis/'+ zip + '/' + country). 
    success(function(data) { 
     $scope.dealer = data; 
    }); 
} 

你必須在這之後,你可以添加一個ng-submit到包含將調用這個函數的輸入<form>

<form ng-submit="updateDealer(zipCodeLookup, countryLookup)"> ... </form> 

確保<form>是正確的控制器內看到新創建的功能。無論何時用戶提交此表單,它都會調用您的PHP服務器,獲取JSON並更新經銷商陣列。

+0

是啊!我不得不調整一些東西,但它的工作!謝謝! – Marek123