React native 这里是react本机移动应用程序中的地图集成

React native 这里是react本机移动应用程序中的地图集成,react-native,react-native-android,here-api,React Native,React Native Android,Here Api,我正在尝试在react本机项目中实现heremap api。在搜索Get时。但是没有合适的文档可以使用此库。我是个新来的本地人。请给我一些实施建议。!如果您不使用expo,请发表评论,我将稍微更改答案 首先,正如你可能知道的,你需要在 创建帐户后,您必须创建一个项目(您可以免费获得一个Freemium计划,它有大量免费请求,如果需要更多,请升级)。之后,您需要在项目页面上为REST&XYZ HUB API/CLI“生成应用程序”。这样,您将收到应用程序ID和应用程序代码。至此,开发者帐户设置完成

我正在尝试在react本机项目中实现heremap api。在搜索Get时。但是没有合适的文档可以使用此库。我是个新来的本地人。请给我一些实施建议。

!如果您不使用expo,请发表评论,我将稍微更改答案

首先,正如你可能知道的,你需要在

创建帐户后,您必须创建一个项目(您可以免费获得一个Freemium计划,它有大量免费请求,如果需要更多,请升级)。之后,您需要在项目页面上为REST&XYZ HUB API/CLI“生成应用程序”。这样,您将收到应用程序ID和应用程序代码。至此,开发者帐户设置完成

现在让我们跳起来做出反应

首先,您需要安装一个名为
react native maps
的npm包,我们将使用它来显示此处提供的数据。您可以查看安装说明

在此之后,假设您已经创建了一个将显示地图的组件。您需要导入以下内容:

import { Marker, Polyline } from 'react-native-maps'
import { MapView } from 'expo'
有了这些,我们的地图几乎准备好了

在本例中,我将使用
axios
,但如果需要,您可以使用
fetch
向此处发出请求

因此,我们导入axios(如果您从未使用过它,您可以了解更多有关它的信息):

现在,你应该在一个州或某处准备好这两个位置的坐标,它应该是这样的:

constructor(props){
    super(props)
    this.state = {
        startingLocation: {
            latitude: "xx.x",
            longitude: "yy.y",
        },
        finishLocation: {
           latitude: "xx.x",
           longitude: "yy.y",
        }
    }
}
“xx.x”和“yy.y”是您想要的实际坐标

所以现在,当你们有了开始和结束位置的坐标后,你们可以在这里向你们的API项目发出请求。它非常简单(我从以下网站获得此api):

//我将创建一个调用此函数的函数,您可以随时调用它
_getRoute=()=>{
//我们使用parseFloat()是因为这里API需要一个浮点
let from_lat=parseFloat(this.state.startingLocation.latitude)
let from_long=parseFloat(this.state.startingLocation.longitude)
let to_lat=parseFloat(this.state.finishLocation.latitude)
let to_long=parseFloat(this.state.finishLocation.longitude)
//我们将在此数组中保存所有多段线坐标
让路线_坐标=[]
axios.get(`https://route.api.here.com/routing/7.2/calculateroute.json?app_id=PUT_YOUR_APP_ID_HERE&app_code=PUT_YOUR_APP_CODE_HERE&waypoint0=geo!${from_lat},${from_long}&waypoint1=geo!${to_lat},${to_long}&mode=faster;bicycle;traffic:disabled&legatattributes=shape`)。然后(res=>{
//这里我们从API响应中获取所有路由坐标
res.data.response.route[0]。leg[0]。shape.map(m=>{
//这里我们得到的是不同变量中的纬度和经度,因为这里把它们一起发送,但是我们
//需要分开吗
设latlong=m.split(',');
设纬度=parseFloat(latlong[0]);
让经度=parseFloat(latlong[1]);
路线坐标推送({纬度:纬度,经度:经度});
}
这是我的国家({
routeForMap:路线坐标,
//在这里,我们可以访问路线摘要,它将显示通过路线需要多长时间、距离等。
摘要:res.data.response.route[0]。摘要,
//注意:现在只需添加这个“isLoading”字段,我稍后会解释它
孤岛加载:false,
})
}).catch(错误=>{
console.log(错误)
})

}
你想从这里使用什么?我曾经需要一个路线计算API,我用这里开发了它,所以如果你只需要用这里进行路线计算,然后用react native显示它,我可以帮你我想用heremap显示标记和绘制多段线。你能帮我吗?当然,让我给你写一个答案。要实现'r'需要eact native maps的google key?因为我不想使用google map或key。我将如何在后台显示此处地图。您不需要google key,只需忽略它并向此处发出请求,然后您将在地图视图上显示该数据。当我使用expo map和react native maps时,它会给我“尝试注册两个同名AIRMap的视图”错误。为什么?您有两个来自“expo”和“react native maps”的相同导入?如果您可以将我粘贴到您的导入内容中会更好。抱歉,我感到困惑。您为什么使用react native maps?看起来OP希望使用HEREMaps SDK。
constructor(props){
    super(props)
    this.state = {
        startingLocation: {
            latitude: "xx.x",
            longitude: "yy.y",
        },
        finishLocation: {
           latitude: "xx.x",
           longitude: "yy.y",
        }
    }
}