qiuxiang / react-native-amap3d

react-native 高德地图组件,使用最新 3D SDK,支持 Android + iOS
https://qiuxiang.github.io/react-native-amap3d/api/
MIT License
1.28k stars 329 forks source link

支持海外LBS吗? #514

Open ChenZhaobin opened 5 years ago

ChenZhaobin commented 5 years ago

公司要求,司机用高德地图做日本和香港的驾驶导航;这个SDK可以用吗?还是说改改某些部分就可以用?

qiuxiang commented 5 years ago

不确定,SDK 支持就支持

ChenZhaobin commented 5 years ago

@qiuxiang 可能,我只需要用LBS版本的android和ios SDK替换react native 安装后引用的SDK就可以了吧。我尝试一下

ChenZhaobin commented 5 years ago

@qiuxiang 又打扰了,哈哈,海外版的需要做如下修改, Android: 海外栅格地图

接口说明:设置是否加载国外的栅格瓦片数据,默认不加载. 需要在地图初始化
之前调用
n 调用方式:
// true 为打开,默认为 false
com.amap.api.maps.MapsInitializer.loadWorldGridMap(true);
设置多语言(自 V5.6.0 版本的 3D 地图 SDK 起支持)
调用:
AMap 类的 setMapLanguage(String language) 方法
 参数为 AMap.CHINESE 或者 AMap.ENGLISH

Ios

接口说明:设置是否加载国外的栅格瓦片数据,默认不加载.
n 调用方式:
//开启海外地图
[self.mapView
performSelector:@selector(setShowsWorldMap:) withObject:@YES];
//关闭海外地图
[self.mapView
performSelector:@selector(setShowsWorldMap:) withObject:@NO];
设置多语言:
设置地图主要语言为英语:
[self.mapView
performSelector:NSSelectorFromString(@"setMapLanguage:")
withObject:@(1)];
设置地图主要语言为中文:
[self.mapView
performSelector:NSSelectorFromString(@"setMapLanguage:")
withObject:@(0)];

在reactnative上该怎么实现呢?求指导一下,具体在哪个文件中实现呢

ChenZhaobin commented 5 years ago

android端已经解决,在 application的onCreate方法中添加就可以了。

ChenZhaobin commented 5 years ago

ios端setShowsWorldMap,好像需要封装一下哦,暂时无法解决。提示找不到self.mapview

DhlOne commented 5 years ago

请问,现在可以支持英文版本了吗

biaji commented 4 years ago

ios 我做了些修改。 过几天验证通过后提交PR。大致如下:

diff --git a/node_modules/react-native-amap3d/lib/js/maps/MapView.js b/node_modules/react-native-amap3d/lib/js/maps/MapView.js
index 66f7a9a..4a473da 100644
--- a/node_modules/react-native-amap3d/lib/js/maps/MapView.js
+++ b/node_modules/react-native-amap3d/lib/js/maps/MapView.js
@@ -178,6 +178,11 @@ export default class MapView extends Component {
      */
     tiltEnabled: PropTypes.bool,

+    /**
+     * 是否启用世界地图支持
+     */
+    worldMapEnabled: PropTypes.bool,
+
     /**
      * 点击事件
      *
diff --git a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
index 392a1b6..92da06d 100644
--- a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
+++ b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
@@ -35,6 +35,7 @@ - (UIView *)view {
 RCT_EXPORT_VIEW_PROPERTY(scrollEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(rotateEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(tiltEnabled, BOOL)
+RCT_EXPORT_VIEW_PROPERTY(worldMapEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(mapType, MAMapType)
 RCT_EXPORT_VIEW_PROPERTY(coordinate, CLLocationCoordinate2D)
 RCT_EXPORT_VIEW_PROPERTY(limitRegion, MACoordinateRegion)
diff --git a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
index 9942924..d771ee6 100644
--- a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
+++ b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
@@ -42,6 +42,14 @@ - (void)setLocationEnabled:(BOOL)enabled {
     self.showsUserLocation = enabled;
 }

+- (void)setWorldMapEnabled:(BOOL)enabled {
+    if(enabled){
+        [self performSelector:@selector(setShowsWorldMap:) withObject:@YES];
+    } else {
+        [self performSelector:@selector(setShowsWorldMap:) withObject:@NO];
+    }
+}
+
 - (void)setShowCompass:(BOOL)enabled {
     self.showsCompass = enabled;
 }
EastWooden commented 4 years ago

com.amap.api.maps.MapsInitializer.loadWorldGridMap(true);

com.amap.api.maps.MapsInitializer.loadWorldGridMap(true); 在地图上国外的地图能显示么?层级放大之后,不是空白的么?

biaji commented 4 years ago

com.amap.api.maps.MapsInitializer.loadWorldGridMap(true);

com.amap.api.maps.MapsInitializer.loadWorldGridMap(true); 在地图上国外的地图能显示么?层级放大之后,不是空白的么?

你需要申请海外LBS权限,额外提供并卖钱的。

vincetm commented 1 year ago

各位大佬,现在新的版本是swift写的了,有现成的例子么可以参照吗?

vincetm commented 1 year ago

ios 我做了些修改。 过几天验证通过后提交PR。大致如下:

diff --git a/node_modules/react-native-amap3d/lib/js/maps/MapView.js b/node_modules/react-native-amap3d/lib/js/maps/MapView.js
index 66f7a9a..4a473da 100644
--- a/node_modules/react-native-amap3d/lib/js/maps/MapView.js
+++ b/node_modules/react-native-amap3d/lib/js/maps/MapView.js
@@ -178,6 +178,11 @@ export default class MapView extends Component {
      */
     tiltEnabled: PropTypes.bool,

+    /**
+     * 是否启用世界地图支持
+     */
+    worldMapEnabled: PropTypes.bool,
+
     /**
      * 点击事件
      *
diff --git a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
index 392a1b6..92da06d 100644
--- a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
+++ b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapViewManager.m
@@ -35,6 +35,7 @@ - (UIView *)view {
 RCT_EXPORT_VIEW_PROPERTY(scrollEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(rotateEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(tiltEnabled, BOOL)
+RCT_EXPORT_VIEW_PROPERTY(worldMapEnabled, BOOL)
 RCT_EXPORT_VIEW_PROPERTY(mapType, MAMapType)
 RCT_EXPORT_VIEW_PROPERTY(coordinate, CLLocationCoordinate2D)
 RCT_EXPORT_VIEW_PROPERTY(limitRegion, MACoordinateRegion)
diff --git a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
index 9942924..d771ee6 100644
--- a/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
+++ b/node_modules/react-native-amap3d/lib/ios/AMap3D/maps/AMapView.m
@@ -42,6 +42,14 @@ - (void)setLocationEnabled:(BOOL)enabled {
     self.showsUserLocation = enabled;
 }

+- (void)setWorldMapEnabled:(BOOL)enabled {
+    if(enabled){
+        [self performSelector:@selector(setShowsWorldMap:) withObject:@YES];
+    } else {
+        [self performSelector:@selector(setShowsWorldMap:) withObject:@NO];
+    }
+}
+
 - (void)setShowCompass:(BOOL)enabled {
     self.showsCompass = enabled;
 }

大佬,您好,新的版本是swift写的了,有现成的例子么可以参照吗?