angular js maps call:url无法加载网页,无法显示网址

时间:2015-05-15 10:43:30

标签: javascript angularjs maps ionic-framework

我试图通过离子框架应用程序进行地图调用。在我的html文件中,我使用:

<a ng-href="maps://?q={{dest.Latitude}},{{dest.Longitude}}">Maps</a>
<div>{{dest.Latitude}},{{dest.Longitude}}</div>

在我的控制器中,dest的数据如下所示:

{"Latitude":12.34567, "Longitude":1.23456}

正确显示div中的纬度和经度。

但如果点击链接我会收到错误:

Failed to load webpage with error: The URL can't be shown

我也尝试将lat和long转换为字符串,但它对它没有任何影响。

如果我使用这样的静态geocordinates一切正常:

<a ng-href="maps://?q=12.34567,1.23456">Maps</a>

我错过了什么?

3 个答案:

答案 0 :(得分:1)

您必须将map添加到href清理白名单中。

示例代码:

angular.module('app',[])
.config(
    function( $compileProvider ){   
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|chrome-extension|map|geo|skype):/);
    }
);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
    <a ng-href="map:lat=51.527141,lon=-0.087853">Map</a>
    <a ng-href="skype:username">Skype</a>
</div>

<强> CompileProvider Docs

答案 1 :(得分:1)

但是,compileProvider解决方案对我没有用,所以我做了一个解决方法。

在我的控制器中,我使用:

$scope.navigate = function(){
    var geoString = 'maps://?q='+dest.Latitude+','+dest.Longitude+'';
    window.open(geoString, '_system');
  };

我正在调用此函数:

<button ng-click="navigate()" class="button button-icon ion-earth"></button>

这很有效。我认为href中的数据绑定存在问题。

答案 2 :(得分:0)

可以肯定的是,是否正在iOS设备上进行测试? 如果我没弄错的话,map://协议只适用于带有Apple Maps的iOS。