标签: angularjs-google-maps

谷歌地图为AngularJS

我是AngularJS的新手,我正在尝试使用https://github.com/angular-ui/angular-google-maps.

我只是想让我的页面上的地图呈现,但我收到一条错误消息,我不知道这意味着什么.任何帮助理解此错误消息将不胜感激.

我在这里创建了一个插件:

github.com/twdean/plunk
Run Code Online (Sandbox Code Playgroud)

这是浏览器中的错误:

Error: [$compile:multidir] Multiple directives [googleMap, markers] asking for new/isolated scope on: <google-map center="center" draggable="true" zoom="zoom" markers="markers" mark-click="true" style="height: 400px"> 

http://errors.angularjs.org/1.2.3/$compile/multidir?p0=googleMap&p1=markers&p2=new%2Fisolated%20scope&p3=%3Cgoogle-map%20center%3D%22center%22%20draggable%3D%22true%22%20zoom%3D%2
Run Code Online (Sandbox Code Playgroud)

google-maps google-maps-api-3 angularjs angularjs-directive angularjs-google-maps

29
推荐指数
2
解决办法
6万
查看次数

在ngMap中使用ng-repeat和标记

我想使用ngMap将谷歌地图添加到我的应用程序.

演示是"静态的",因为它们只有硬编码的HTML.我希望我的代码是"动态的",因为它会周期性地要求服务器查看其数据库并返回一堆坐标来绘制,这将随时间而变化.我希望这很清楚; 如果没有,请询​​问更多细节.

我修改了ngmap标记演示,每两秒生成一些随机的纬度/经度坐标(而不是去我的服务器,就像我的最终应用程序一样).请参阅Plunk.

控制台中没有错误,似乎ngMap正在尝试添加我的标记,因为我在控制台中看到了很多这样的东西......

adding marker with options,  
Object {ngRepeat: "myMarker in markers", position: O}
clickable: true
ngRepeat: "myMarker in markers"
position: O
A: 103.96749299999999
k: 1.387454
__proto__: O
visible: true
__proto__: Object
Run Code Online (Sandbox Code Playgroud)

其中K和A是Lat/Long,正如我所期望的那样.

但是......我在地图上看不到任何标记.我究竟做错了什么?


[更新]一个很好的答案,我很高兴之后获得了赏金.对于其他读这个并且希望使用ngMap的人来说@allenhwkim在另一个stackoverflow问题中说,我认为,在他的博客上,ngMap只是为你创建地图,之后你用标准的Google Maps API来操纵它.

例如,在循环添加标记之前,我声明
var bounds = new google.maps.LatLngBounds();并在循环中,在将标记添加到地图后,我bounds.extend(latlng);和最后,在循环之后,我

var centre = bounds.getCenter();  
$scope.map.setCenter(centre);
Run Code Online (Sandbox Code Playgroud)

我分叉了答案并创建了一个新的Plunk来展示这个.这不是世界上最实用的功能,但重点是展示如何使用$scope.mapGoogle Maps API.再次感谢Allen,ngMap.

angularjs angularjs-ng-repeat ng-map angularjs-google-maps

8
推荐指数
2
解决办法
2万
查看次数

ng-map:设置缩放级别时无法读取undefined属性'apply'

我在angularjs应用程序中使用ngMap.当我尝试在地图元素上设置缩放时,我遇到了错误.以下是Chrome控制台的错误消息:

 TypeError: Cannot read property 'apply' of undefined
    at Wk.eventFunc (ng-map.js:205)
    at Object.T.trigger (main.js:18)
    at kf (main.js:22)
    at Wk.N.set (main.js:21)
    at Wk.setZoom (main.js:29)
    at ng-map.js:1568
    at angular.js:6837
    at forEach (angular.js:323)
    at Object.$get.Attributes.$set (angular.js:6835)
    at interpolateFnWatchAction (angular.js:8157)
Run Code Online (Sandbox Code Playgroud)

当我的map元素的zoom属性触发时:

<map center="{{initCenter.lat}}, {{initCenter.lng}}" zoom="{{zoom}}" on-dragend="dragend()" on-zoom_changed="zoomchanged()">
Run Code Online (Sandbox Code Playgroud)

被绑定到我的角度控制器:

app.controller("mapCtrl", function ($scope, $location, dataContext) {
    $scope.markers = [];

    $scope.initCenter = dataContext.center();
    $scope.zoom = dataContext.zoom();
Run Code Online (Sandbox Code Playgroud)

dataContext是一种在应用程序中公开各种状态变量的服务.我也尝试通过函数设置$ scope.zoom,产生相同的错误.

错误发生在ng-map.js文件的第1568行:

    var observeAndSet = function(attrs, attrName, object) {
  attrs.$observe(attrName, function(val) {
    if (val) {
      void 0;
      var setMethod = …
Run Code Online (Sandbox Code Playgroud)

google-maps angularjs ng-map angularjs-google-maps

5
推荐指数
1
解决办法
2925
查看次数

(angularjs-google-maps)在标记内单击

这个问题是关于angularjs-google-maps,https://github.com/allenhwkim/angularjs-google-maps

有没有办法在标记上使用ng-click来设置这样的变量?(为了测试目的,1的值是硬编码的).单击当前标记似乎不会触发ng-click.

<marker ng-repeat="instance in common.instances" 
 position="[{{instance.lat}},{{instance.lng}}]" 
 ng-click="common.selectedinstance = 1">
</marker>
Run Code Online (Sandbox Code Playgroud)

google-maps angularjs angularjs-directive angularjs-google-maps

3
推荐指数
1
解决办法
9616
查看次数

angularjs-google-maps - 信息窗口不适用于ng-repeat

我使用带有ng-map的谷歌地图,并使用附加到这些标记的标记和信息窗口添加到地图中使用ng-repeat.我的角度视图如下:

<div id="mapWrap" map-lazy-load="https://maps.google.com/maps/api/js">      
<map center="current-location" zoom="9" on-bounds_changed="getLocations()">

    <marker  ng-repeat="myMarker in myMarkers"
        clickable="true"
        on-click="showInfoWindow(event, '{{myMarker.infoWindowId}}')"
        id="{{myMarker.id}}"
        position="[{{myMarker.lat}},{{myMarker.lon}}]"
        title="{{myMarker.title}}"
        draggable="false"
        opacity="{{myMarker.opacity}}"
        visible="{{myMarker.visible}}"
        icon="{{myMarker.icon}}">
    </marker>

    <info-window ng-repeat="infoWindow in infoWindows" 
        id="{{infoWindow.id}}" 
        visible-on-marker="{{infoWindow.markerId}}">
            <div ng-non-bindable="">
                <h1>{{infoWindow.name}}</h1>
                <p>{{infoWindow.text}}</p>
                <a href="{{infoWindow.url}}">Get forecast</a>
            </div> 
    </info-window>

</map>
</div>
Run Code Online (Sandbox Code Playgroud)

myMarker.infoWindowId对应于infoWindow.idmyMarker.idinfoWindow.markerId.似乎没有问题,加载视图和控制器后,标记和infowindows在DOM中列出得很好.

标记在地图上显示得很好,因为它们在on-bounds_changed="getLocations()"执行功能时会更新.

信息窗口列表也会更新getLocations(),标记和信息窗口可以在DOM中看到,但是当我点击相应的标记时,信息窗口不显示.尝试使用视图中的单个信息窗口项,并在用户单击标记时更新其内容,但没有任何更改.

任何人都可以指出我正确的方向,我在这里做的不是什么?谢谢.

第二个问题:如果我必须ng-non-bindable在信息窗口内容中使用(否则ng-map抱怨),我该如何动态更新/生成信息窗口的内容?但是只有在显示infow-windows之后才会出现此问题.

javascript google-maps google-maps-api-3 angularjs angularjs-google-maps

1
推荐指数
1
解决办法
1667
查看次数

AngularJS谷歌地图指令

嗨,我正在尝试使用angularjs开发一个应用程序和我发现的实例GMaps指令:http://nlaplante.github.io/angular-google-maps/#!/usage .我遵循所有步骤,但我无法渲染地图!它没有返回任何错误!救命!!

在HTML中

<html ng-app="Maptesting">
Run Code Online (Sandbox Code Playgroud)

<google-map center="center" 
            zoom="zoom" 
            markers="markers" 
            refresh="!isMapElementHidden" 
            style="height: 400px; width: 100%; display: block;">
</google-map>

<div ng-view></div>
Run Code Online (Sandbox Code Playgroud)

<script type="text/javascript" src="js/angular/angular.js"></script>
<script src="http://code.angularjs.org/1.2.0-rc.2/angular-route.min.js"></script>
<script type="text/javascript" src="js/angular-google-maps.js"></script>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=en"></script>

<script src="app/map.js">
</script>
Run Code Online (Sandbox Code Playgroud)

在控制器中:

angular.module('Maptesting', ['google-maps'])

.controller('CtrlGMap', ['$scope', function($scope) {
        $scope.center = {
            latitude: 45,
            longitude: -73
        };

        $scope.markers = [];
        $scope.zoom = 8;

}])
Run Code Online (Sandbox Code Playgroud)

javascript google-maps google-maps-api-3 angularjs angularjs-google-maps

1
推荐指数
2
解决办法
1万
查看次数