0

На картах Google, после того, как вы приземлитесь на MainPage вы видите местоположение по умолчанию (зависит от вашего местоположения, я думаю), и URL-адрес выглядит следующим образом:Эмуляция Google Maps местоположение на основе URL

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

После того, как вы двигаетесь на карте изменение URL, добавляет /maps и некоторые параметры с LatLng и увеличить

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 маршрутизации для контроллера должны иметь регулярное выражение, чтобы соответствовать шаблону отслеживания (мой был настолько основополагающим, что я могу 't даже делить его здесь)

Смежные вопросы