2014-09-26 66 views
0

在谷歌地圖,你的土地上,你看到一個默認位置的炫魅後(取決於你的位置我猜),以及URL看起來像這樣:效仿谷歌地圖位置URL

https://www.google.com/maps/preview 

一旦你移動地圖上的地址變化,增加了/maps和一些參數與經緯度和放大

https://www.google.com/maps/@38.3206568,-120.9094382,10z 

如果你給該鏈接時,那將指向特定的位置。

我正在開發的網站在着陸頁上顯示地圖,因此當您前往www.mymapsite.com時,您會看到一張帶有默認位置的地圖。然後,當你移動時,我想添加前面描述的相同行爲(但沒有/maps)。

https://www.mymapsite.com/@38.3206568,-120.9094382,10z 

我控制器內該功能使用$location服務更新路徑:

$scope.updateMapTrack = function() { 
    $rootScope.trackOptions = $scope.trackOptions; 
    $location.path('@' + $scope.trackOptions.centerLat + ',' + $scope.trackOptions.centerLng + ',' +$scope.trackOptions.zoomLevel + 'z'); 
}; 

的問題是,這個經過了$urlRouterProvider.otherwise('notfound')和踢我出的地圖(展示我們的定製404錯誤)。

我的問題是;我應該修改$ urlRouterProvider以允許這種行爲嗎?我應該使用不同的東西來改變url?

我也會感謝你,如果你提供一個不同的方法來實現這一點。

回答

0

最後我做了它的工作:)(但在這個問題上的低訪問我不覺得我會幫助很多人)

花了很大的變化,以防萬一有人想做在他們的網站類似的東西,這裏是什麼是需要很短的版本:

  • 當更新URL,你必須使用.replace()

    $location.path(newPath).replace();

  • 爲了控制路由例程,必須添加$urlRouterProvider.deferIntercept();,如here所述,這爲一些邊緣情況提供了處理。

  • 重定向到默認位置在第一次登陸:

    $urlRouterProvider.when('/', defaultTrackingOption);//the same for other landing possibilities

  • 的控制器路由URL匹配必須有一個正則表達式來跟蹤模式相匹配(我是如此基本,我可以這裏甚至沒有分享)