【问题标题】:Angular 2+ Google Maps get coordinates from click position on map to update marker positionAngular 2+ Google Maps 从地图上的点击位置获取坐标以更新标记位置
【发布时间】:2017-12-06 19:23:04
【问题描述】:

我想做一些可能非常简单的事情,但我似乎无法弄清楚。

我将 Angular2+ Google Maps 模块集成到我的 Angular 项目 (https://angular-maps.com/)。现在我希望能够通过单击地图上的某个位置来替换标记。为此,我需要获取用户在地图上单击的位置的坐标。如果我有这些坐标,我可以更新经度和纬度来移动标记。但是我不确定如何获取点击的位置。

这是我在html文档中的地图实现:

<agm-map [latitude]="latitude" [longitude]="longitude" [zoom]="zoom" [streetViewControl]="false" [mapTypeControl]="true" [fullscreenControl]="true" (mapClick)="placeMarker()">
   <agm-marker [latitude]="latitude" [longitude]="longitude" [iconUrl]="'assets/geomarker.png'"></agm-marker>
   <agm-circle [latitude]="latitude" [longitude]="longitude" [radius]="20" [fillOpacity]="0.50" [fillColor]="'#00A19A'"></agm-circle>
</agm-map>

我正在使用 mapClick 输出事件。 (https://angular-maps.com/api-docs/agm-core/components/AgmMap.html) 但是这个事件似乎没有发出任何坐标。我现在正在举办这样的活动:

placeMarker(){
  console.log(event);
}

这是输出:

MouseEvent {isTrusted: true, screenX: 3657, screenY: 67, clientX: 401, clientY: 318…}
altKey
:
false
bubbles
:
true
button
:
0
buttons
:
0
cancelBubble
:
false
cancelable
:
true
clientX
:
401
clientY
:
318
composed
:
true
ctrlKey
:
false
currentTarget
:
null
defaultPrevented
:
false
detail
:
1
eventPhase
:
0
fromElement
:
null
isTrusted
:
true
layerX
:
364
layerY
:
154
metaKey
:
false
movementX
:
0
movementY
:
0
offsetX
:
364
offsetY
:
154
pageX
:
401
pageY
:
318
path
:
Array(23)
relatedTarget
:
null
returnValue
:
true
screenX
:
3657
screenY
:
67
shiftKey
:
false
sourceCapabilities
:
InputDeviceCapabilities
srcElement
:
div
target
:
div
timeStamp
:
18285.225000000002
toElement
:
div
type
:
"click"
view
:
Window
which
:
1
x
:
401
y
:
318
__proto__
:
MouseEvent

【问题讨论】:

    标签: angular google-maps coordinates google-maps-markers


    【解决方案1】:

    我自己找到了答案。

    在 HTML 方面我不得不使用:

    (mapClick)="placeMarker($event)"
    

    在打字稿方面我不得不使用:

      placeMarker($event){
        console.log($event.coords.lat);
        console.log($event.coords.lng);
      }
    

    这会分别返回纬度和经度,现在我可以将这些坐标推送到 HTML 文件中的标记以更新其位置。

    【讨论】:

    • @Anytoe ,它只更新地图点击而不是显示的标记。当我单击标记时,我无法获得它的纬度和经度。你能给我看看这个吗?
    • 我会说这是一个不同的事件?看看这里:stackoverflow.com/questions/37463214/…。这有帮助吗?
    • 同样适用于右键单击事件:(mapRightClick)="mapRightClickMap($event)。只是不要忘记$event参数,不要给它一个类型如EventEmitter,保留为any
    • event.coords 未定义。?
    • agm 3.3.0 beta 中出现问题...事件参数不是允许读取坐标的 google.maps.MouseEvent 类型。如果他们想通了,有人可以帮忙吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-09-26
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多