在地图上使用标记缩放时,Cordova / Phonegap应用程序在GoogleMaps新API上崩溃

时间:2018-10-26 18:50:01

标签: ios reactjs google-maps cordova phonegap

更新:使用新发布的googlemaps API 3.35解决了问题

问题

在尝试捏(或快速双击)放大时,如果地图视图上有标记,则该应用可能会崩溃。

直到Google发布使用新地图renderer的JS API 3.32才发生。我们曾经强制使用3.31,但是由于August已被删除。

使用

  • Phonegap:Phonegap cli-7.1.0,Cordova iOS 4.5.4
  • iOS:11、12(可能是所有iOS版本)
  • 设备:iPhone 8,iPhone X,iPad Pro(可能是所有Apple设备)
  • GoogleMaps JavaScript API:3.32-3.34
  • 反应:16.2.0

Google地图实施(尝试4种方式):

  • react-google-maps:崩溃
  • google-map-react:崩溃
  • normal js implementation不崩溃

    var marker1 = new window.google.maps.Marker({
        position: { lat: 39.304, lng: -76.617 },
        map: this.map
    });
    var marker2 = new window.google.maps.Marker({
        position: { lat: 39.305, lng: -76.616 },
        map: this.map
    });
    
  • 使用常规js实现创建一个React组件:崩溃

    我的标记组件:

    class Marker extends Component {
        componentDidMount() {
            const { position, icon } = this.props;
            this.marker = new window.google.maps.Marker({
                position,
                icon
            });
        }
    
        componentWillReceiveProps(newProps) {
            const { map, position } = newProps;
            if (map && !this.marker.map) {
                this.marker.setMap(map);
            }
            if (position.lat !== this.props.position.lat || position.lng !== this.props.position.lng) {
                this.marker.setPosition(position);
            }
        }
    
        componentWillUnmount() {
            this.marker.setMap(null);
        }
    
        render() {
            return false;
        }
    }
    

    我如何使用此组件:

    {_.map(studyAreas, (s, i) => (
                <Marker
                    icon={s.icon}
                    position={s.position}
                    map={this.map}
                    key={i}
                />
            ))
    }
    

相关链接

IOS : Cordova App Crash on Google Map api zoom in ios 11.3 iphone x

https://github.com/ionic-team/cordova-plugin-ionic-webview/issues/75

在讨论这个github问题时,由于某些js库,似乎他们遇到了崩溃的问题。但是,即使我创建了一个简单的新phonegap应用程序但未引用任何额外的库,也遇到了这个问题。

任何帮助,讨论,想法都将不胜感激,谢谢!

0 个答案:

没有答案