-
企业账号申请 高德地图_如何将自己的企业位置信息,添加到高德等各大地图上?一招搞定!...
2021-01-14 05:23:18就比如百度地图,想在上面加上自己企业或者店铺的地址但咱又不懂,于是就有人收费几千元帮你去做坑吗?不坑!只是当你知道方法后觉得太坑有些互联网项目,赚的就是信息差来说说往地图上加上企业地址有啥好处比方火焰...互联网上有些东西其实很简单
若是你不懂,肯定觉得很高深
当你学会以后,又觉得没有什么了不起
但往往就是这么简单的东西,在别人眼中也是一种商机
.
就比如百度地图,想在上面加上自己企业或者店铺的地址
但咱又不懂,于是就有人收费几千元帮你去做
坑吗?不坑!只是当你知道方法后觉得太坑
有些互联网项目,赚的就是信息差
来说说往地图上加上企业地址有啥好处
比方火焰约了朋友喝酒,但一时不知道这附近有什么好去处
于是就会打开地图查找
当火焰在百度地图上搜索餐馆、美食、饭店、酒店等等关健词的时候
就会出来一堆对应的商家,上面有名称、地址、电话、座标以及价格
.
当火焰点击其中一家,就能直接在线下单
并且开着车导航过去,非常的方便
做为商家,不管你是卖什么产品的,旅馆也好、建材也罢
只要上面能找到你,肯定能为你带来不少额外的订单
那么如何才能把自己的店铺或企业做上去呢?
你不必花几千元找人去做,很简单,自己就能搞定
首先将你的店铺名称在百度地图上进行搜索
因为你没有做过,所以搜索不出来结果
这时咱们可以在弹出来的下拉框中点击添加该地址
火焰用自己的公众号来举例
按要求填写好名称、类型、位置、电话等信息
提交以后,等待百度工作人员电话审核就行了
.
是不是很简单
360地图、高德地图也是一样的添加方法
搜狗地图直接在位置上点击右键添加就可以
如果你的店铺还没有添加过,那就赶紧自己动手吧
.
当然,如果你想将它当成一个小项目来做,也是可行的
火焰说过,有些互联网项目,赚的就是信息差
方法并不是谁都懂,火焰身边就有朋友靠这个小项目活得很滋润
没做之前 ,永远不要给自己找理由、设障碍、下结论
好了,分享就到这里,方法简单,觉得有用就顺手分享吧
-
在微信上面如何显示自己公司所有产品,连锁店的地理位置,如何调用高德云图API
2015-08-14 09:57:52高德【云图】,提供实体店位置、照片、电话、名称等的存储、显示与检索。 高德【URI API】,提供定位、驾车、搜周边等地图功能。 高德申请账号后,获取一个key,绑定Rest 服务接口 可以界面操作,添加修改批量操作 ...先前步骤:
http://bbs.amap.com/thread-23135-1-1.html
高德【云图】,提供实体店位置、照片、电话、名称等的存储、显示与检索。
高德【URI API】,提供定位、驾车、搜周边等地图功能。
高德申请账号后,获取一个key,绑定Rest 服务接口
可以界面操作,添加修改批量操作
http://lbs.amap.com/yuntu/reference/cloudstorage/点击数据管理后台
地图生成地址:
也可以代码操作:参考手册:http://lbs.amap.com/yuntu/reference/cloudstorage/
<span style="white-space:pre"> </span>/** * 向指定tableid的数据表中插入一条新数据。创建单条数据请求 * @Title: createMapDate * @Description: TODO(向指定tableid的数据表中插入一条新数据。创建单条数据请求) * @author pll * @param @param lbsAmap * @param @return 设定文件 * @return InputStream 返回类型 * @throws */ public static LbsAmapResult createMapDate(LbsAmap lbsAmap) { PrintWriter printWriter = null; BufferedReader bufferedReader = null; LbsAmapResult lbsAmapResult=null; String url = "http://yuntuapi.amap.com/datamanage/data/create"; JSONObject obj = new JSONObject(); obj.element("_name",lbsAmap.get_name()); obj.element("_location",lbsAmap.get_location()); //设置json数据 lbsAmap.setData(obj.toString()); StringBuffer params = new StringBuffer(); // 表单参数与get形式一样 params.append("key").append("=").append(lbsAmap.key).append("&").append("tableid").append("=").append(lbsAmap.tableid). append("&").append("loctype").append("=").append("1").append("&").append("data").append("=").append(lbsAmap.getData()); // 表单参数字符串 String paramsString = params.toString(); try { URL urlGet = new URL(url); HttpURLConnection http = (HttpURLConnection) urlGet.openConnection(); http.setRequestMethod("POST"); // 必须是POST方式请求 http.setRequestProperty("Content-Type","application/x-www-form-urluncoded,charset=UTF-8");//服务协议 http.setRequestProperty("Accept-Charset", "UTF-8");//设置 HttpURLConnection的字符编码 //设置通用的请求属性 http.setRequestProperty("accept", "*/*"); http.setRequestProperty("connection", "Keep-Alive"); http.setRequestProperty("Content-Length", String.valueOf(params.length())); http.setDoOutput(true); http.setDoInput(true); // 获取URLConnection对象对应的输出流 必须为UTF-8 printWriter = new PrintWriter(new OutputStreamWriter(http.getOutputStream(),"utf-8")); //printWriter = new PrintWriter(http.getOutputStream()); // 发送请求参数 printWriter.write(paramsString); // flush输出流的缓冲 printWriter.flush(); //System.setProperty("sun.net.client.defaultConnectTimeout", "30000");// 连接超时30秒 //System.setProperty("sun.net.client.defaultReadTimeout", "30000"); // 读取超时30秒 http.connect(); // 根据ResponseCode判断连接是否成功 int responseCode = http.getResponseCode(); if (responseCode != 200){ System.out.println("连接错误:"+responseCode); } else { System.out.println("连接成功!"); } // 定义BufferedReader输入流来读取URL的ResponseData bufferedReader = new BufferedReader(new InputStreamReader(http.getInputStream())); String line; StringBuffer responseResult = new StringBuffer(); while ((line = bufferedReader.readLine()) != null) { responseResult.append(line); } lbsAmapResult=JSON.parseObject(responseResult.toString(),LbsAmapResult.class); //System.out.println(lbsAmapResult.getInfo()); }catch (Exception e) { e.printStackTrace(); } return lbsAmapResult; } public static void main(String[] args) { LbsAmap lbsAmap=new LbsAmap(); lbsAmap.set_name("呵呵"); lbsAmap.set_location("104.165651,31.125698"); LbsAmapResult lbsAmapResult =createMapDate(lbsAmap); if(lbsAmapResult.getInfo().equals("OK")){ System.out.println("添加成功!"); }else{ System.out.println("添加失败!"); } //System.out.println(System.getProperty("sun.net.client.defaultConnectTimeout")); }
-
[android] 百度地图开发 (二).定位城市位置和城市POI搜索
2014-12-24 02:41:34该篇文章主要讲述如何定位城市位置、定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过位置提供的...一. 百度地图城市定位和POI搜索知识
上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置、定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?
通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当前位置.
其中Geopoint(纬度值,经度值)以微度为单位,需要乘以10的6次方.核心代码如下:
同样的道理,如果知道了城市的经纬度就可以设置其为当前地图中心,这样就实现了定位城市位置的功能.那么怎样获取城市的经纬度呢?//通过网络获取当前位置 String provider = LocationManager.NeTWORK_PROVIDER; Location location = locationManager.getLastKnownLocation(provider); Geopoint point = new Geopoint((int)(location.getLatitude*1E6), (int)(location.getLongitude*1E6)); mMapController.setCenter(point);
百度Map API提供MKSearch.geocode(String address, String city)方法进行GEO地理编码检索,它的意思就是搜索某个城市具体地址的位置,而如果只搜索城市使用geocode(city, city)即可.同时逆地址解析函数MKSearch.reverseGeocode(new GeoPoint(latitude, longitude))可以实现通过输入经纬度查询具体地址.
其中核心代码如下(代码放置位置不同,详见后面实例):
其中百度地图API搜索主要通过初始化MKSearch类,同时其结果监听对象MKSearchListener类来实现一部搜索服务.在该类中有很多方法实现不同功能,其中onGetAddrResult()方法可以根据经纬度搜索地址信息,而我们需要实现的POI兴趣点搜索是通过onGetPoiResult()实现的,同样公交路线等搜索都可以通过它实现.//初始化MKSearch mMKSearch = new MKSearch(); mMKSearch.init(mBMapManager, new MySearchListener()); //搜索城市 mMKSearch.geocode(city, city); //内部类实现MKSearchListener接口,实现异步搜索服务 public class MySearchListener implements MKSearchListener { @Override public void onGetAddrResult(MKAddrInfo result, int iError) { //经纬度与地址搜索 ... mMapController.setCenter(result.geoPt); } }
具体核心代码如下:
在android使用百度地图中可以添加地图覆盖物,那么什么是覆盖物呢?//内部类实现MKSearchListener接口,实现异步搜索服务 public class MySearchListener implements MKSearchListener { //经纬度与地址搜索结果 public void onGetAddrResult(MKAddrInfo result, int iError) { } //POI搜索结果(范围检索、城市POI检索、周边检索) public void onGetPoiResult(MKPoiResult result, int type, int iError) { } //驾车路线搜索结果 public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { } //公交换乘路线搜索结果 public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) { } //步行路线搜索结果 public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) { } //获取详细信息 public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { } public void onGetPoiDetailSearchResult(int arg0, int arg1) { } public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1,int arg2) { } public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { } }
所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注、矢量图形元素(包括:折线和多边形和圆)、定位图标等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动.
地图API提供了如下几种覆盖物:
1.Overlay 覆盖物的抽象基类,所有的覆盖物均继承此类的方法,实现用户自定义图层显示.
2.MyLocationOverlay 一个负责显示用户当前位置的Overlay.
3.ItemizedOverlay<Item extends OverlayItem> 它是Overlay的一个基类,包含了一个OverlayItem列表,相当于一组分条的Overlay,通过继承此类将一组兴趣点显示在地图上.
4.PoiOverlay 本地搜索图层,提供某一特定地区的位置搜索服务,比如在北京市搜索“公园”,通过此图层将公园显示在地图上.
5.RouteOverlay 步行驾车导航线路图层,将步行驾车出行方案的路线及关键点显示在地图上.
6.TransitOverlay 公交换乘线路图层,将某一特定地区的公交出行方案的路线及换乘位置显示在地图上.
我们这里可以使用MyLocationOverlay定位自己当前位置添加覆盖物,也可以在POI搜索过程中通过PoiOverlay添加搜索的兴趣点覆盖物.下面讲述代码及实现.
二. 源码实现
下载地址:http://download.csdn.net/detail/eastmount/8292969
首先,设置其activity_main.xml布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" tools:context="com.example.baidumapshow.MainActivity" tools:ignore="MergeRootFrame" > <!-- 顶部路径 --> <RelativeLayout android:id="@+id/MyLayout_top" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="40dp" android:layout_alignParentTop="true" android:gravity="center"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@null" android:padding="0dip" > <EditText android:id="@+id/city_edittext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="#ffffff" android:textSize="22dp" android:hint="输入城市" android:layout_weight="15" /> <EditText android:id="@+id/keyword_edittext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="#ffffff" android:textSize="22dp" android:hint="输入关键词" android:layout_weight="25" /> <Button android:id="@+id/query_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textColor="#ffffff" android:textSize="20dp" android:text="搜索" /> </LinearLayout> </RelativeLayout> <!-- 底部添加按钮 --> <RelativeLayout android:id="@+id/MyLayout_bottom" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" android:gravity="center"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:layout_alignParentBottom="true" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textColor="#ffffff" android:text="定位" /> </LinearLayout> </RelativeLayout> <!-- 中部显示图片 --> <RelativeLayout android:id="@+id/Content_Layout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@id/MyLayout_bottom" android:layout_below="@id/MyLayout_top" android:gravity="center"> <com.baidu.mapapi.map.MapView android:id="@+id/map_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> </RelativeLayout> </RelativeLayout>
然后是MainActivity.java源码
最后设置AndroidManifest.xml文件,主要是申请网络权限和设置APIKeypublic class MainActivity extends Activity { //BMapManager 对象管理地图、定位、搜索功能 private BMapManager mBMapManager; private MapView mapView = null; //地图主控件 private MapController mMapController = null; //地图控制 MKMapViewListener mMapListener = null; //处理地图事件回调 private MKSearch mMKSearch; //定义搜索服务类 //搜索 private EditText keyWordEditText; private EditText cityEditText; private Button queryButton; private static StringBuilder sb; private MyLocationOverlay myLocationOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** * 创建对象BMapManager并初始化操作 * V2.3.1中init(APIKey,null) V2.4.1在AndroidManifest中赋值AK * 注意 初始化操作在setContentView()前 */ mBMapManager = new BMapManager(getApplication()); mBMapManager.init(null); setContentView(R.layout.activity_main); mapView = (MapView) findViewById(R.id.map_view); cityEditText = (EditText) findViewById(R.id.city_edittext); keyWordEditText = (EditText) findViewById(R.id.keyword_edittext); queryButton = (Button) findViewById(R.id.query_button); mMapController = mapView.getController(); //获取地图控制器 mMapController.enableClick(true); //设置地图是否响应点击事 mMapController.setZoom(16); //地图缩放级别(3-19级) 级别越高信息越详细 mapView.setBuiltInZoomControls(true); //显示内置缩放控件 /** * 获取学校经纬度 设置地图中心点 */ GeoPoint point = new GeoPoint((int)(39.96703 * 1E6), (int)(116.323772 * 1E6)); mMapController.setCenter(point); mapView.regMapViewListener(mBMapManager, new MKMapViewListener() { /** * 地图移动完成时会回调此接口方法 */ @Override public void onMapMoveFinish() { //Toast.makeText(MainActivity.this, "地图移动", Toast.LENGTH_SHORT).show(); } /** * 地图加载完毕回调此接口方法 */ @Override public void onMapLoadFinish() { Toast.makeText(MainActivity.this, "地图载入", Toast.LENGTH_SHORT).show(); } /** * 地图完成带动画的操作(如: animationTo())后,此回调被触发 */ @Override public void onMapAnimationFinish() { } /** * 当调用过 mMapView.getCurrentMap()后,此回调会被触发 * 可在此保存截图至存储设备 */ @Override public void onGetCurrentMap(Bitmap arg0) { } /** * 点击地图上被标记的点回调此方法 */ @Override public void onClickMapPoi(MapPoi arg0) { if (arg0 != null){ Toast.makeText(MainActivity.this, arg0.strText, Toast.LENGTH_SHORT).show(); } } }); /** * 初始化MKSearch 调用城市和POI搜索 */ mMKSearch = new MKSearch(); mMKSearch.init(mBMapManager, new MySearchListener()); queryButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mMapController = mapView.getController(); mMapController.setZoom(10); sb = new StringBuilder(); //内容清空 //输入正确城市关键字 String city = cityEditText.getText().toString().trim(); String keyWord = keyWordEditText.getText().toString().trim(); if(city.isEmpty()) { //默认城市设置为贵阳 city="贵阳"; } //如果关键字为空只搜索城市 GEO搜索 geocode(adress,city) 具体地址和城市 if(keyWord.isEmpty()) { mMKSearch.geocode(city, city); } else { //搜索城市+关键字 mMKSearch.setPoiPageCapacity(10); //每页返回POI数 mMKSearch.poiSearchInCity(city, keyWord); } } }); } @Override protected void onResume() { mapView.onResume(); if (mBMapManager != null) { mBMapManager.start(); } super.onResume(); } @Override protected void onDestroy() { mapView.destroy(); if (mBMapManager != null) { mBMapManager.destroy(); mBMapManager = null; } super.onDestroy(); } @Override protected void onPause() { mapView.onPause(); if (mBMapManager != null) { mBMapManager.stop(); } super.onPause(); } /** * 内部类实现MKSearchListener接口,用于实现异步搜索服务 */ public class MySearchListener implements MKSearchListener { /** * 根据经纬度搜索地址信息结果 * 同时mMKSearch.geocode(city, city)搜索城市返回至该函数 * * @param result 搜索结果 * @param iError 错误号(0表示正确返回) */ @Override public void onGetAddrResult(MKAddrInfo result, int iError) { if (result == null) { return; } StringBuffer sbcity = new StringBuffer(); sbcity.append(result.strAddr).append("\n"); //经纬度所对应的位置 mapView.getOverlays().clear(); //清除地图上已有的所有覆盖物 mMapController.setCenter(result.geoPt); //置为地图中心 //添加原点并刷新 LocationData locationData = new LocationData(); locationData.latitude = result.geoPt.getLatitudeE6(); locationData.longitude = result.geoPt.getLongitudeE6(); myLocationOverlay = new MyLocationOverlay(mapView); myLocationOverlay.setData(locationData); mapView.getOverlays().add(myLocationOverlay); mapView.refresh(); // 通过AlertDialog显示地址信息 new AlertDialog.Builder(MainActivity.this) .setTitle("显示当前城市地图") .setMessage(sbcity.toString()) .setPositiveButton("关闭", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create().show(); } /** * POI搜索结果(范围检索、城市POI检索、周边检索) * * @param result 搜索结果 * @param type 返回结果类型(11,12,21:poi列表 7:城市列表) * @param iError 错误号(0表示正确返回) */ @Override public void onGetPoiResult(MKPoiResult result, int type, int iError) { if (result == null) { return; } //获取POI并显示 mapView.getOverlays().clear(); PoiOverlay poioverlay = new PoiOverlay(MainActivity.this, mapView); poioverlay.setData(result.getAllPoi()); //设置搜索到的POI数据 mapView.getOverlays().add(poioverlay); //兴趣点标注在地图上 mapView.refresh(); //设置其中一个搜索结果所在地理坐标为地图的中心 if(result.getNumPois() > 0) { MKPoiInfo poiInfo = result.getPoi(0); mMapController.setCenter(poiInfo.pt); } //添加StringBuffer 遍历当前页返回的POI (默认只返回10个) sb.append("共搜索到").append(result.getNumPois()).append("个POI\n"); for (MKPoiInfo poiInfo : result.getAllPoi()) { sb.append("名称:").append(poiInfo.name).append("\n"); } // 通过AlertDialog显示当前页搜索到的POI new AlertDialog.Builder(MainActivity.this) .setTitle("搜索到的POI信息") .setMessage(sb.toString()) .setPositiveButton("关闭", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.dismiss(); } }).create().show(); } /** * 驾车路线搜索结果 * * @param result 搜索结果 * @param iError 错误号(0表示正确返回) */ @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { } /** * 公交换乘路线搜索结果 * * @param result 搜索结果 * @param iError 错误号(0表示正确返回) */ @Override public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) { } /** * 步行路线搜索结果 * * @param result 搜索结果 * @param iError 错误号(0表示正确返回) */ @Override public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) { } @Override public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetPoiDetailSearchResult(int arg0, int arg1) { // TODO Auto-generated method stub } @Override public void onGetShareUrlResult(MKShareUrlResult arg0, int arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) { // TODO Auto-generated method stub } } }
程序运行结果如下图所示:<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.baidumapshow" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" /> <!-- 获取网络状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 访问网络 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 获取WiFi状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 允许程序写入外部存储,如SD卡上写文件 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 读取电话状态 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 获取精确位置 GPS芯片接收卫星的定位信息,定位精度达10米以内 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 通过WiFi或移动基站的方式获取用户错略的经纬度信息 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 获取模拟定位信息 --> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="QwaNhFQ0ty2QmdYh3Nrr0gQx"> </meta-data> <activity android:name="com.example.baidumapshow.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
当只输入城市名的时候显示的是城市对应的地图.如下图贵阳.最后希望文章对大家有所帮助,刚刚接触android开发百度地图,而且还是使用V2.4.1版本,同时搜索城市时没有显示覆盖物不知道其原因.如果有错误或不足之处,还请海涵!建议大家看看官方文档和百度提供的Demo.文章主要参考百度官方文档、柳峰大神博客和《Android第一行代码》.当输入城市+关键字时显示POI兴趣点,如北京的大学.这里设置只显示10个POI.
最后我测试了下县份同样可以显示,但是城市名错误处理我没做,如施秉县.说明百度地图的API还是非常强大的,希望后面接着学习吧!
下载地址:http://download.csdn.net/detail/eastmount/8292969
(By:Eastmount 2014-12-24 半夜3点 http://blog.csdn.net/eastmount/)
参考资料及在线笔记:
百度官方文档 http://developer.baidu.com/map/sdkandev-4.htm
百度官方文档 Android SDK开发指南之覆盖物
百度地图相关Demo下载 Demo v3.2.0
柳峰博客 [010]百度地图API之根据经纬度查询地址信息(Android
柳峰博客 [013] 百度地图API之城市POI搜索-获取所有结果(Android) -
我的位置
2013-09-14 21:15:31每一台电脑都要申请属于自己的android:apiKey,要是使用别人的android:apiKey, 则地图只显示方格,不会有实际的地图出现,并且在Android虚拟机重建或者重装电脑的操作系统的时候 也要重新申请android:apiKey,关于...每一台电脑都要申请属于自己的android:apiKey,要是使用别人的android:apiKey,
则地图只显示方格,不会有实际的地图出现,并且在Android虚拟机重建或者重装电脑的操作系统的时候
也要重新申请android:apiKey,关于如何申请,我在“申请Google Map服务”中已说得很详细。
新建一个地图项目。
在main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.android.maps.MapView
android:id="@+id/mapview"
android:clickable="true" android:enabled="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="0Pm9QrsSh_mwtc6rMyqZMRu71qFpIB51UXVWHmg" />
</LinearLayout>
在MyOverlayImpl.java中:
package com.li.googlemapproject;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
public class MyOverlayImpl extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> allOverlayItems = new ArrayList<OverlayItem>();
private Context context = null;
public MyOverlayImpl(Drawable defaultMarker, Context context) {
super(boundCenter(defaultMarker));
this.context = context;
}
@Override
protected OverlayItem createItem(int i) {
return this.allOverlayItems.get(i);
}
@Override
public int size() {
return this.allOverlayItems.size();
}
@Override
protected boolean onTap(int index) { // 单击标记图片之后的操作
OverlayItem item = this.allOverlayItems.get(index); // 取得指定的点
Dialog dialog = new AlertDialog.Builder(this.context)
.setIcon(R.drawable.pic_m).setTitle(item.getTitle())
.setMessage(item.getSnippet())
.setPositiveButton("关闭", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
}).create();
dialog.show();
return true;
}
public void addOverlayItem(OverlayItem item) {
this.allOverlayItems.add(item);
super.populate();
}
}
在PaintLineOverlay.java中:
package com.li.googlemapproject;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class PaintLineOverlay extends Overlay {
private GeoPoint beginGeoPoint = null;
private GeoPoint endGeoPoint = null;
public PaintLineOverlay(GeoPoint beginGeoPoint, GeoPoint endGeoPoint) {
this.beginGeoPoint = beginGeoPoint;
this.endGeoPoint = endGeoPoint;
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Paint paint = new Paint();
paint.setStyle(Style.FILL_AND_STROKE);
paint.setStrokeWidth(3);
paint.setColor(Color.RED);
Point beginPoint = new Point();
Point endPoint = new Point();
Projection projection = mapView.getProjection();
projection.toPixels(this.beginGeoPoint, beginPoint);
projection.toPixels(this.endGeoPoint, endPoint);
canvas.drawLine(beginPoint.x, beginPoint.y, endPoint.x, endPoint.y,
paint);
}
}
在PaintPointOverlay.java中:
package com.li.googlemapproject;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class PaintPointOverlay extends Overlay {
private GeoPoint geoPoint = null;
public PaintPointOverlay(GeoPoint geoPoint) {
this.geoPoint = geoPoint;
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Point point = new Point();
Projection projection = mapView.getProjection();
projection.toPixels(this.geoPoint, point); // 将地图上坐标的点设置为绘图屏幕的点
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawCircle(point.x, point.y, 6, paint);
}
}
在MyGoogleMapDemo.java中:
package com.li.googlemapproject;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
public class MyGoogleMapDemo extends MapActivity {
private MapView mapView = null;
private int longitudeE6 = 0;
private int latitudeE6 = 0;
private LocationManager locationManager = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
this.mapView = (MapView) super.findViewById(R.id.mapview); // 取得地图视图
this.mapView.setBuiltInZoomControls(true);
// 给定一个坐标:北海银滩的坐标:109.15,21.40
this.longitudeE6 = (int) (109.15 * 1E6);
this.latitudeE6 = (int) (21.40 * 1E6);
GeoPoint point = new GeoPoint(this.latitudeE6, this.longitudeE6); // 要标记的坐标
MyLocationOverlay myloc = new MyLocationOverlay(this, this.mapView);
myloc.enableMyLocation(); // 注册GPS更新我的位置
myloc.enableCompass(); // 开启磁场感应
this.mapView.getOverlays().add(myloc);
MapController mapController = this.mapView.getController();
mapController.animateTo(point); // 设置坐标的动画
mapController.setCenter(point);
mapController.setZoom(16); // 最大的级别是16
this.locationManager = (LocationManager) super
.getSystemService(Context.LOCATION_SERVICE);
this.locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, new LocationListenerImpl());
}
private class LocationListenerImpl implements LocationListener {
public void onLocationChanged(Location location) {
MyGoogleMapDemo.this.longitudeE6 = (int) (location.getLongitude() * 1E6);
MyGoogleMapDemo.this.latitudeE6 = (int) (location.getLatitude() * 1E6);
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}
在AndroidManifest.xml中修改权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.li.googlemapproject"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MyGoogleMapDemo"
android:label="@string/title_activity_my_google_map_demo" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-library android:name="com.google.android.maps" />
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
-
Android地图开发(调用谷歌和百度地图)
2015-01-12 17:15:18Map API密钥、如何创建包含地图的项目、地图的功能使用(地图缩放、设置视图、定位到自己的位置、添加标记、获得屏幕坐标的位置、双击放大、位置搜索即经纬度位置及屏幕像素坐标和具体地址的转换、监听某个位置)、... -
百度地图的MapVGL 添加自定义模型图层(ThreeJS)
2020-04-07 16:05:27研究ThreeJS也有段时间了,也能和公司业务相结合,但是涉及到地图层面的业务内容就有点菊紧,因为模型要和地图... 接下来需要我们跟着几个步骤来实现在指定位置放入我们自己的模型。 准备工作: 1申请百度地图的a... -
Android之运用百度地图检索地点
2020-05-30 01:00:03首先基本工作我们要完成,需要百度SDK(在这里我就不在介绍了,我之前的文章有介绍如何申请) 首先需要配置成这样我们才能使as与百度地图才能连接(这里它们相当于是as与百度地图之间的桥梁) 首先需要创建一个安卓... -
百度地图 功能模块完整版 开发指南
2016-04-07 23:27:32(4)Demo中放入了测试用ak,开发者请申请并更换为自己的【服务端】ak; (5)开发者在LBS开放平台官网添加数据后需发布到检索并更换demo中的geoTableId; (6)其他注意事项请参考【CloudSearchDemoViewController.... -
Android开发中调用Google Map或Baidu Map
2012-11-14 19:20:00包括如何申请Google Map API密钥、如何创建包含地图的项目、地图的功能使用(地图缩放、设置视图、定位到自己的位置、添加标记、获得屏幕坐标的位置、双击放大、位置搜索即经纬度位置及屏幕像素坐标和具体地址的转换... -
工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究
2017-02-28 21:22:19昆山工业技术研究院着眼于为委托用户和质检机构搭建良好的沟通桥梁,免去目前市场业务中企业用户需要实地地并频繁地与检测机构沟通,从而提出自己的委托乃至下委托单、等待检测报告等,设计并研发了市场上首款提供... -
Google Android开发入门与实战(09年度畅销榜TOP50)--详细书签版
2013-02-08 12:00:478.4 打造自己的数据库存储——SQLite存储方式 141 8.4.1 Android中对数据库操作 141 8.4.2 完整地操作数据库——日记本实例 147 8.5 我的数据你来用——ContentProvider介绍 155 8.5.1 初识ContentProvider 155... -
Android 上百实例源码分析以及开源分析 集合打包4
2012-07-10 21:54:03ContactsPositionOverlay 接触者的位置显示物,Overlay的子类,主要负责在地图上显示自定义图像,内置滚动与否以及图像大小改变与否,在地图上话画在线联系人以及场景等。 ContactsUpdaterBehaviour主要表现在其设置... -
Attach类型,就是弹窗的位置需要依附于某个View或者某个触摸点,就像系统的PopupMenu效果一样,但PopupMenu的自定义性很差,淘宝的商品列表筛选的下拉弹窗,微信的朋友圈点赞弹窗都是这种。 Drawer类型,就是从窗体...
-
智能扫地机VHDL FPGA
2012-07-12 19:02:40这次数字系统的用VHDL语言设计因工作量较以前的小系统以及大系统的设计难度都大得多,故在将近半个学期的设计中,自己的体会非常深。 在刚拿到题目时,不能像设计大系统样立即就有思路,一开始想到的只有先将键盘上... -
Oracle DBA突击:帮你赢得一份DBA职位--详细书签版
2013-02-06 15:56:40狗会因为人随手丢出的一个东西而追逐,可能是一个骨头、一块肉、一个眼神,甚至是一个石头,警示一定要看清自己在追逐的东西。 目录 封面 -17 扉页 -16 版权 -15 序 -14 前言 -12 自我测试 -7 目录 -4 第一部分 ... -
网趣网上购物系统时尚版V13.0
2015-09-12 16:35:34可以选择设置图片水印或文字水印,并可设置水印嵌入图片的位置,设置水印可以有效防止图片盗链,同时不易被修改和使用,更能表现出一个网站的特色风格,设置好水印后,添加商品上传图片时,会自动在图片上嵌入水印... -
网趣商城ASP源码
2013-02-17 17:11:35可以选择设置图片水印或文字水印,并可设置水印嵌入图片的位置,设置水印可以有效防止图片盗链,同时不易被修改和使用,更能表现出一个网站的特色风格,设置好水印后,添加商品上传图片时,会自动在图片上嵌入水印... -
网趣网上购物系统HTML静态版v2012版
2012-03-15 10:02:44可以选择设置图片水印或文字水印,并可设置水印嵌入图片的位置,设置水印可以有效防止图片盗链,同时不易被修改和使用,更能表现出一个网站的特色风格,设置好水印后,添加商品上传图片时,会自动在图片上嵌入水印... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示... -
JAVA上百实例源码以及开源项目
2016-01-03 17:37:40通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 ... -
keyWindow 始终至于 App 最上方等等,而且每一个 App 里面的线下附带功能模块很多是相似的,比如帧率查看、内存和 CPU 监控等等,但是现在基本上都是每个 App 都是自己实现了一份,经历了以上的问题之后,...
-
keyWindow 始终至于 App 最上方等等,而且每一个 App 里面的线下附带功能模块很多是相似的,比如帧率查看、内存和 CPU 监控等等,但是现在基本上都是每个 App 都是自己实现了一份,经历了以上的问题之后,...
-
仿淘宝网程序无错版
2012-08-05 09:41:06在任何情况下,我们都强烈要求用户定期备份自己的数据。备份数据,有益无害,不要为了每周想省几分钟,而后悔不及。 ☆建议不超过一周,备份一次数据。数据更新量特别大时,马上进行备份。 ☆备份的内容 1.数据库... -
* 教程地址:想要系统的了解整个过程,如何安装autojs,如何在js上跑这个脚本,请参考我的教程https://m.lizhiweike.com/channel2/887975 */ //解锁密码,需要自行设置,设置方法参考我的教程 var unlockCode=...
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
《ChinaTeXMathFAQ_V1.1》.pdf
-
ELF视频教程
-
Kotlin 对象表达式和伴生对象
-
基于Qt的LibVLC开发教程
-
01-虚拟机的安装使用.pdf
-
实现 MySQL 读写分离的利器 mysql-proxy
-
1052. 爱生气的书店老板
-
C++代码规范和Doxygen根据注释自动生成手册
-
Arduino舵机风扇.zip
-
Samba 服务配置与管理
-
使用正则表达式验证注册页面(用户名,密码,确认密码,邮箱,手机号)
-
PowerBI重要外部工具详解
-
鲇鱼1000-2000.txt
-
2019年-华启学院中级通信工程师综合能力真题及答案(完整版).pdf
-
C语言零基础入门(详细讲解)
-
Flutter系列之Platform Channel使用详解
-
mysql事务实现原理
-
linux启动jar命令nohup
-
马士兵 mybatis学习笔记