标签: react-native-maps

如何在 onPress 的 react-native-maps 中获取标记的键或坐标?

我正在使用react-native-maps来渲染带有多个标记的 MapView。当用户单击标记时,我想执行一些操作和动画。为此,我将一个函数(例如,onMarkerPress)绑定到每个标记的 onPress。我遇到的问题是我不知道如何找出哪个标记触发了该功能。有没有办法获得对标记/识别键道具的引用?甚至坐标也可以,因为我可以使用它们来查找标记。

javascript events react-native react-native-maps

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

点击标记时,我想点击它3次

Android上的地图标记存在问题,似乎无法修复它.解决方法是点击地图标记3次,它将正确打开带有图像的标注/注释.

我怎么能以编程方式做到这一点?每次用户点击时,我想点击标记3次.

<MapView.Marker
  key={marker.key}
  coordinate={marker.latlng}
  title={marker.title}
  description={marker.description}
>
  <MapView.Callout style={styles.annotation}>
    <Image
      key={marker.key}
      source={{ uri: marker.image }}
      style={styles.thumbnail}
    />
  </MapView.Callout>
</MapView.Marker>
Run Code Online (Sandbox Code Playgroud)

react-native react-native-maps

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

React Native无法安装react-native-maps(Android)

我无法安装 React Native React-Native-Maps,当我尝试使用 React-Native Run-Android 构建时出现此错误(我还没有在 iOS 上尝试过):

配置项目“:app”时出现问题。无法解析配置“:app:_debugApk”的所有依赖项。未找到名称为“default”的配置。

我按照这里的说明进行操作:

https://github.com/airbnb/react-native-maps/blob/master/docs/installation.md

当我跑步时:

react-native link
Run Code Online (Sandbox Code Playgroud)

我得到:

rnpm-install info iOS module react-native-maps is already linked
rnpm-install info Android module react-native-geocoder is already linked
rnpm-install info iOS module react-native-geocoder is already linked
Run Code Online (Sandbox Code Playgroud)

它似乎可以在 iOS 上工作,但不能在 Android 上工作,尽管对于地理编码器来说它可以工作(并且该服务工作正常)。

所以我按照手动说明进行了编辑(但我仍然收到上面的错误):

android/app/build.gradle
android/settings.gradle
MainApplication.java
android\app\src\main\AndroidManifest.xml (已针对地理编码器进行了编辑)。

我确实对 build.gradle 中的版本号进行了一些操作:

// instructed in the installation guide -> build fail see above
compile project(':react-native-maps')
// Version 0.12.1 and earlier -> Build success but ERROR 500 in the …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-maps

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

动画在react-native-map中结束后的调用函数

region: new MapView.AnimatedRegion({
        longitude: 4.70821527747714,
        latitudeDelta: 1.384276459048536,
        latitude: 43.31340937725116,
        longitudeDelta: 2.066803805399701,
      });
....................
....................
this.state.region
    .timing({
      latitude: region.latitude._value,
      longitude: region.longitude._value,
      latitudeDelta: 0.5,
      longitudeDelta: 0.5,
    })
    .start();

this.setState({
  zoomLevel: 8,
  regionUpdated: true,
});
Run Code Online (Sandbox Code Playgroud)

这就是我在react-native中使用的。

我想在动画结束后调用setState函数。但是现在,它在动画过程中被调用。

我认为如果动画功能是Promise功能会很棒。但我不确定。

我怎么解决这个问题?

ios reactjs react-native react-native-ios react-native-maps

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

在 React Native Maps 中设置最大和最小缩放级别

如何在 React Native Maps 中设置最小和最大缩放级别

<MapView
    ref={(ref) => this.mapView = ref}
    clustering={true}
    clusterTextColor='#fff'
    style={styles.map}
    region={this.props.coordinate}
>
    //My map markers
</MapView>
Run Code Online (Sandbox Code Playgroud)

react-native react-native-maps

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

将标记放置在地图上时如何获取坐标

我使用react-native-maps创建了地图。现在我需要在单击地图时以文本形式获取纬度和经度。

我尝试了这种方法,但出现错误“找不到变量:坐标”。

export default class Location extends Component {
  constructor(props) {
super(props);
this.state = {
  markers: []
};
this.handlePress = this.handlePress.bind(this);
  }
  handlePress(e) {
this.setState({
  markers: [
    ...this.state.markers,
    {
      coordinate: e.nativeEvent.coordinate,
      key: coordinate,
      color: randomColor()
    }
  ]
});
console.log(e.nativeEvent);
  }
  render() {
return (
  <MapView
    style={styles.map}
    initialRegion={{
      latitude: 7.8731,
      longitude: 80.7718,
      latitudeDelta: 0.0922,
      longitudeDelta: 0.0421
    }}
    onPress={e => this.handlePress(e)}
  >
    {this.state.markers.map(marker => (
      <Marker
        key={marker.key}
        coordinate={marker.coordinate}
        pinColor={marker.color}
      >
        <View style={styles.marker}>
          <Text style={styles.text}>{marker.coordinate}</Text>
        </View>
      </Marker>
    ))}
  </MapView>
);
  }
}
Run Code Online (Sandbox Code Playgroud)

我如何修复它?

react-native react-native-maps

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

类型org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler类型的对象的未知属性'supportLibVersion'

我收到以下错误

无法获得类型为org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHand的对象的未知属性'supportLibVersion'

我正在开发本机应用程序,并且本机映射依赖项在下面出现错误

 dependencies {
      def supportLibMajorVersion = supportLibVersion.split('\\.')[0] as int
      def appCompatLibName =  (supportLibMajorVersion < 20) ? "androidx.appcompat:appcompat" : "com.android.support:appcompat-v7"
      implementation "$appCompatLibName:$supportLibVersion"
      implementation('com.facebook.react:react-native:+') {
        exclude group: 'com.android.support'
      }
      implementation "com.google.android.gms:play-services-base:${safeExtGet('playServicesVersion', '16.1.0')}"
      implementation "com.google.android.gms:play-services-maps:${safeExtGet('playServicesVersion', '16.1.0')}"
      implementation 'com.google.maps.android:android-maps-utils:0.5'
    }
Run Code Online (Sandbox Code Playgroud)

谁能知道这是怎么回事?

终端中的错误是

失败:构建失败,发生异常。

其中:
构建文件'D:\ react native \ abhishek \ Gwala \ node_modules \ react-native-maps \ lib \ android \ build.gradle'行:20

出了什么问题:
评估项目':react-native-maps'时发生问题。
无法获得类型为org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler的对象的未知属性'supportLibVersion'。

第20行是

def supportLibMajorVersion = supportLibVersion.split('\\.')[0] as int
Run Code Online (Sandbox Code Playgroud)

react-native react-native-android react-native-maps

3
推荐指数
2
解决办法
1926
查看次数

获取当前位置后设置初始区域不起作用

我正在使用带有 Hooks 的功能组件,我正在获取用户当前位置并将其分配给MapView initialRegion但组件不会重新渲染。

我尝试使用ref带有MapView组件的引用来调用,animateToRegion()但它不起作用。

有什么我想念的吗?

这是我的代码示例:

import React, { useState, useEffect, useRef } from 'react';
import { View, Text, Image, Platform, ScrollView, ActivityIndicator } from 'react-native';
import { DateMenu, Dropdown, DropdownTextInput, InputField} from '../../../GlobalReusableComponents/TextFields';
import { Space } from '../../../GlobalReusableComponents/Separators';
import { Button } from 'react-native-elements';
import axios from 'axios';
import MapView, { Marker } from 'react-native-maps';
import useReverseGeocoding from '../../../context/useReverseGeocoding';
import useCurrentLocation from '../../../context/useCurrentLocation';
import { getLocationAsync } from '../../../util/getCurrentLocation'; …
Run Code Online (Sandbox Code Playgroud)

reactjs react-native react-native-maps react-hooks

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

从 latitudeDelta 和 longitudeDelta 获取以米/公里为单位的半径

我根据 2 点之间的设定距离从后端(laravel)请求数据,latitude例如longitude。纬度 = 78.3232 且经度 = 65.3234 且距离 = 30 英里/公里,获取 30 英里内的行。

我遇到的问题是distance.

我正在使用react-native-maps,放大/缩小是基于latitudeDeltalongitudeDelta的,并且当用户放大/缩小以发送到后端并根据点和获取数据时,我不知道如何计算它们的半径/距离半径/距离

目前我在客户端有这个功能。确定当用户更改区域时何时获取新数据。但它有一个硬编码的问题distance(5.0 KM)

const _onRegionChangeComplete = (onCompletedregion: Region) => {
    if (initialRegion) {
      const KMDistance = helper.distance(         
        initialRegion?.latitude,
        initialRegion?.longitude,
        onCompletedregion.latitude,
        onCompletedregion.longitude,
        "K"
      );

      if (KMDistance > 5.0) {
        props.getNearByReports({   // request backend if distance difference more than 5 kilometers
          latitude: onCompletedregion.latitude,
          longitude: onCompletedregion.longitude
        });
      }
    }
  };
Run Code Online (Sandbox Code Playgroud)

helper.distance // 获取初始点与用户更改区域后的距离差

function …
Run Code Online (Sandbox Code Playgroud)

mysql latitude-longitude laravel react-native react-native-maps

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

无法使用 React Native 地图中的 hideCallout 函数

当我按下应用程序上卡片的 X 按钮时,我当前正在尝试关闭标注。

我的代码是这样的。** 封卡功能 **

  unsetCard = id => {
    this.setState({
      ...this.state,
      showCard: false,
    });

    this.markers.hideCallout();

    if (this.state.keyboard) {
      Keyboard.dismiss();
    }
  };
Run Code Online (Sandbox Code Playgroud)

这是我的 ** 地图视图代码,我使用 RN 聚类 **

<MapView
            // 
            mapRef={ref => (this.myMapRef = ref)}
            //
            onPress={this.unsetCard}>
            {this.props.data.map(marker => (
              <Marker
                key={marker.id}
                ref={ref => (this.markers = ref)}
               //
               }>
                <Callout
                  //
                  }}>
                  <CustomCallout title={marker.t} />
                </Callout>
              </Marker>
            ))}
          </MapView>
Run Code Online (Sandbox Code Playgroud)

最后在同一文件中的该组件中调用取消设置卡的函数:

            <CustomCardWithImage
              close={() => this.unsetCard(this.state.cardInfo.id)}
            />
Run Code Online (Sandbox Code Playgroud)

如果有人告诉我如何使用标记的引用,我将不胜感激,因为尽管我尝试过,但它不起作用。

提前致谢,

reactjs react-native react-native-maps

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