Ionic 2 - Google Maps Native:标记点击事件未触发

Posted

技术标签:

【中文标题】Ionic 2 - Google Maps Native:标记点击事件未触发【英文标题】:Ionic 2 - Google Maps Native: marker click event not firing 【发布时间】:2018-04-29 03:12:36 【问题描述】:

我正在使用 Ionic 2 和 google maps cordova plugin。

“cordova-plugin-googlemaps”:“^2.0.11”

我无法触发此侦听器。

标记已添加到地图中,但点击事件不会触发警报。

感谢您的帮助!

    let latlng = new LatLng(spot.lat, spot.long);
    let markerOptions: MarkerOptions = 
        'position': latlng,
        'animation': 'drop'
      ;


      this.map.addMarker(markerOptions).then((marker: Marker) => 
        marker.addEventListener(GoogleMapsEvent.MARKER_CLICK).subscribe(e => 
          alert('foo');
        );
      );

附加信息

@ionic-native/core: 'version': 3.7.0

@ionic-native/google-maps: 'version': '4.3.0'

import GoogleMaps, GoogleMap, GoogleMapsEvent, GoogleMapOptions, CameraPosition, MarkerOptions, LatLng, Marker from '@ionic-native/google-maps';

我正在循环遍历多个 lat long 坐标并将它们添加到地图中。该事件永远不会因为其中任何一个而被触发。

当我尝试将偶数附加到其中一个标记时,它也不起作用。

最后,如果我发出另一个警报,它不会触发。是否有可能添加标记承诺没有解决?

this.map.addMarker(markerOptions).then((marker: Marker) => 
   alert('in here'); 
 marker.addEventListener(GoogleMapsEvent.MARKER_CLICK).subscribe(e => 
   alert('foo');
 );
);

【问题讨论】:

您使用什么版本的@ionic-native/core@ionic-native/google-maps?至少上面的代码应该可以工作。 @wf9a5m75 我添加了其他信息。谢谢您的帮助。我认为它应该工作,不知道我做错了什么 【参考方案1】:

你应该试试这个。对我来说效果很好

marker.on(GoogleMapsEvent.MARKER_CLICK).subscribe((latLng: LatLng) => 
    // do something
);

【讨论】:

很遗憾,您发布的代码不起作用。【参考方案2】:

您需要使用@ionic-native/core@4.4.0@ionic-native/google-maps@4.4.0。 至少@ionic-native/core@3.7.0 太旧了。

$> npm uninstall @ionic-native/core @ionic-native/google-maps
$> cordova plugin rm cordova-plugin-googlemaps

$> npm install @ionic-native/core@latest @ionic-native/googlemaps@latest
$> cordova plugin add cordova-plugin-googlemaps --variable API_KEY_FOR_android="..." --variable API_KEY_FOR_ios="..." --no-fetch

@ionic-native/google-maps@4.4.0开始,创建地图的方式发生了变化。

export class HomePage 

  map: GoogleMap;

  constructor()   // <-- no longer need to define in constructor
  

  ionViewDidLoad() 
    this.loadMap();
  

  loadMap() 
    this.map = GoogleMaps.create('map_canvas');  // <-- changed
    this.map.one(GoogleMapsEvent.MAP_READY).then(() => 
      ...
    );
  

【讨论】:

还是没有运气。呸呸呸。地图已创建,标记在地图上,但仍然没有点击事件。 您能否举例说明如何在地图上添加标记?它必须在one 函数中吗?我目前正在每次相机停止移动时加载标记。 在提问之前能不能先看一下文档站点? github.com/mapsplugin/cordova-plugin-googlemaps-doc/blob/master/…docs.google.com/presentation/d/… 谢谢,是的,我已多次阅读此文档。我仍然不清楚我做错了什么。似乎对除我以外的所有人都有效,并且有很多例子可以证明它有效github.com/ionic-team/ionic-native/issues/1790我会一直把我的头撞到墙上。谢谢你的帮助我会告诉你我必须做什么

以上是关于Ionic 2 - Google Maps Native:标记点击事件未触发的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Maps for Ionic 2 中计算两点之间的距离

Ionic 5 Google Maps 标记在缩放时闪烁

Ionic:新幻灯片(Swiper)+ angular-google-maps 在拖动时会导致灰色空间

Ionic2 Google Maps JS SDK 不适用于 Ionic View

在标记Ionic Google Maps JavaScript之间绘制折线

使用 Restriction for Ionic 应用程序保护 Google Maps API 密钥