如何用Google离线API调用离线地图

合集下载

Google地图API教程

Google地图API教程

开发人员指南地图基础知识1简介2Google 地图的“Hello, World”2加载Google 地图API2地图DOM 元素2GMap2 - 基本对象2初始化地图2加载地图3经度和纬度4地图属性5地图交互6信息窗口简介任何Google 地图API 应用程序中的基础元素都是“地图”本身。

本文档讨论GMap2基础对象的用法和地图操作的基础知识。

Google 地图的“Hello, World”开始学习Google 地图API 最简单的方式是看一个简单的示例。

下面的网页显示以北京的故宫博物院为中心的500x300 的地图。

<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="/1999/xhtml"><head><meta http-equiv="content-type"content="text/html; charset=utf-8"/><title>Google Maps JavaScript API Example</title><scriptsrc="/maps?file=api&amp;v=2&am p;key=abcdefg&sensor=true_or_false"type="text/javascript"></script><script type="text/javascript">function initialize(){if(GBrowserIsCompatible()){var map=new GMap2(document.getElementById("map_canvas"));map.setCenter(new GLatLng(39.9493,116.3975), 13);}}</script></head><body onload="initialize()"onunload="GUnload()"><div id="map_canvas"style="width:500px;height: 300px"></div></body></html>您可以查看此示例及下载、编辑和调试该示例,但必须将该文件中的密钥替换为您自己的Google 地图API 密钥。

如何采用离线的 google map api 加载离线谷歌地图的方法

如何采用离线的 google map api 加载离线谷歌地图的方法

如何采用离线的 Google Map API 加载离线谷歌地图的方法注:文档中所提到的“GoogleMapAPIV3.rar”附件,请到水经注软件论坛下载。

一、下载示例数据这里以《水经注万能地图下载器》为你说明如何下载谷歌卫星地图。

安装万能地图下载器以后,软件启动时会显示选择在线地图的对话框,请选择“卫星.谷歌”即会显示在线的谷歌卫星地图窗口,如下图所示。

由于只是为了作演示说明如何用 Google Map 离线 API 加载谷歌地图的方法,这里我们只需要框选中国范围,即点击工具栏上的“框选下载区域”,然后在视图中绘制选择范围,如下图所示。

下载即可,如下图所示。

点击“确定”按钮,开始下载卫星地图数据。

下载完成后导出瓦片数据,选择导出类型为“瓦片:Google Map”,保存路为“D:\Test”目录,如下图所示。

在对话框中点击“输出”按钮导出Google Map瓦片,如下图所示。

二、地图引擎部署第一步:将附件中的“GoogleMapAPIV3.rar”下载后解压到“D:\Test”目录。

第二步:将“D:\Test”目录中的“中国_GoogleMapTiles”重命名为“data”,如下图所示。

第三步:在浏览器中打开“D:\Test\GoogleMapAPIV3\Example_GoogleMapAPI.html”,如果操作无误,将会显示离线的卫星地图,如下图所示。

以上,即是如何用 Google Map 离线 API加载谷歌地图的方法,你可以根据实际需求对“D:\Test\GoogleMapAPIV3\Example_GoogleMapAPI.html”文件进行进一步开发。

注:文档中所提到的“GoogleMapAPIV3.rar”附件,请到水经注软件论坛下载。

下面是赠送的中秋节演讲辞,不需要的朋友可以下载后编辑删除!!!谢谢中秋佳节演讲词推荐中秋,怀一颗感恩之心》老师们,同学们:秋浓了,月圆了,又一个中秋要到了!本周日,农历的八月十五,我国的传统节日——中秋节。

如何在Cesium中加载谷歌离线影像数据

如何在Cesium中加载谷歌离线影像数据

如何在Cesium中加载谷歌离线影像数据
Cesium是一个用于显示三维地球和地图的开源js库。

它可以用来显示海量三维模型数据、影像数据、地形高程数据、矢量数据等等,本文将介绍利用91卫图助手下载谷歌卫星影像,利用Apache Web 服务器发布,并在Cesium中加载显示。

•91卫图助手下载器
1、启动91卫图助手,打开软件后,拉框选择范围,双击弹出下
载对话框
2、在下载对话框中我们选择要下载的级别,级别越高,清晰度越
高,文件越大,按自己需要选择即可
3、在下载对话框中,点击导出设置,选择导出方式为:导出TMS 瓦片,如下所示
4、点击确定后,开始下载,下载完成后的结果如下所示
5. 然后我们可以在Apache Web服务器中发布该服务
6、在Cesium中加载影像图层,代码如下:
7、在浏览器中打开Cesium,显示效果如下:
的全球数据,然后再下载高级别的局部范围的数据,然后拷贝到同一个文件夹下发布,这样显示效果更佳
2.本软件还支持导出Cesium地形数据,详见高程下载中如何在
Cesium中加载谷歌地形数据章节。

google map api v2 地图导航

google map api v2 地图导航

这是我自己写的一个google 最新的基于map api v2的地图导航功能,本人的机器是索尼爱立信 mt11i,系统为2.3.3亲测完全可用,google map api v2许可码请自己去谷歌申请,你过你的测试系统api版本11(android3.0)以上的话,注意两处map = ((SupportMapFragment) (this.getSupportFragmentManager().findFragmentById(R.id.map))).getMap();和布局文件中的support均可以省略support欢迎加群讨论技术方面的问题:杭州android开发讨论群(216045581)注意新建项目之前需要安装google play services然后导入通过上图方法导入sdk包下面的一个包:\adt-bundle-windows-x86\sdk\extras\google\google_play_services\libproje ct\google-play-services_libAndroidManifest.xml<?xml version="1.0"encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.example.v2_test"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17"/><permissionandroid:name="com.example.v2_test.permission.MAPS_RECEIVE"android:protectionLevel="signature"/><uses-permission android:name="android.permission.INTERNET"/> <uses-permissionandroid:name="com.example.v2_test.permission.MAPS_RECEIVE"/> <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permissionandroid:name="com.google.android.providers.gsf.permission.READ_GSERVICE S"/><uses-permissionandroid:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permissionandroid:name="android.permission.ACCESS_MOCK_LOCATION"/><uses-featureandroid:glEsVersion="0x00020000"android:required="true"/><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme"><activityandroid:name="com.example.v2_test.MainActivity"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER" /></intent-filter></activity><meta-dataandroid:name="com.google.android.maps.v2.API_KEY"android:value="AIzaSyDmrnUUl_zWzgimKKeR5t3ZiinvouSWO8E"/> </application></manifest>布局文件<RelativeLayoutxmlns:android="/apk/res/android"xmlns:map="/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><fragmentandroid:id="@+id/map"android:layout_width="match_parent"android:layout_height="match_parent"class="com.google.android.gms.maps.SupportMapFragment"/> <ImageButtonandroid:id="@+id/local"android:background="@null"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_alignParentRight="true"android:layout_marginRight="10dp"/></RelativeLayout>菜单弹出框布局文件<?xml version="1.0"encoding="utf-8"?><TableLayout xmlns:android="/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="起始位置:"android:textColor="@android:color/white"android:textSize="18dp"></TextView><EditTextandroid:id="@+id/start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18dp"android:text="我的位置"></EditText><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@android:color/white"android:textSize="18dp"android:text="目的地:"></TextView><EditTextandroid:id="@+id/end"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18dp"android:text=""></EditText></TableLayout>这个是activitypackage com.example.v2_test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap;import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.CameraPosition; import tLng;import com.google.android.gms.maps.model.Marker;import com.google.android.gms.maps.model.MarkerOptions; import com.google.android.gms.maps.model.Polyline;import com.google.android.gms.maps.model.PolylineOptions; import android.app.AlertDialog;import android.app.ProgressDialog;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener; import android.graphics.Color;import android.location.Criteria;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v4.app.FragmentActivity;import android.util.Log;import youtInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;import android.widget.ImageButton;public class MainActivity extends FragmentActivity {List<LatLng> list;Polyline polyline;private Location location;private CameraPosition cameraPosition;private GoogleMap map;String start = "";String end = "";double lat = 0.0;double lng = 0.0;double endlat = 0.0;double endlng = 0.0;LocationManager locationManager;ImageButton local;LocationListener llistener;Marker marker;private ProgressDialog progressdialog;private Handler mHandler = new Handler() {public void handleMessage(Message msg) {switch (msg.what) {case 1:progressdialog.dismiss();if(polyline!=null){polyline.remove();map.clear();markMysition();}map.addMarker(new MarkerOptions().position(new LatLng(endlat, endlng)).title(MainActivity.this.getLocation(endlat, endlng)));LatLng last = null;for (int i = 0; i < list.size() - 1; i++) {LatLng src = list.get(i);LatLng dest = list.get(i + 1);last = dest;polyline = map.addPolyline(new PolylineOptions().add(new LatLng(titude, src.longitude),new LatLng(titude,dest.longitude)).width(4).color(Color.GREEN));}break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);local = (ImageButton) findViewById(R.id.local);local.setImageResource(R.drawable.ww);// 点击按钮视图回到我的位置local.setOnClickListener(new android.view.View.OnClickListener() {@Overridepublic void onClick(View v) {MainActivity.this.setCameraPosition();}});map = ((SupportMapFragment) (this.getSupportFragmentManager() .findFragmentById(R.id.map))).getMap();this.getPointLocation();MainActivity.this.setCameraPosition();}// 标记我的位置void markMysition() {marker=map.addMarker(new MarkerOptions().position(new LatLng(lat, lng)).title(this.getLocation(lat, lng)).snippet("我的位置"));}// 获取我的位置private void getPointLocation() {Criteria criteria = new Criteria();// ACCURACY_FINE 较高精确度criteria.setAccuracy(Criteria.ACCURACY_FINE);criteria.setAltitudeRequired(false);criteria.setBearingRequired(false);criteria.setCostAllowed(true);criteria.setPowerRequirement(Criteria.POWER_LOW);locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);String provider = locationManager.getBestProvider(criteria, true);Log.d("provider", provider);llistener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {/*if(marker!=null){marker.remove();}*/lat = location.getLatitude();lng = location.getLongitude();// MainActivity.this.markMysition();}@Overridepublic void onProviderDisabled(String provider) {Log.i("onProviderDisabled", "come in");}@Overridepublic void onProviderEnabled(String provider) {Log.i("onProviderEnabled", "come in");}@Overridepublic void onStatusChanged(String provider, int status,Bundle extras) {}};location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);locationManager.requestLocationUpdates(provider, 3000, (float) 10.0,llistener);updateLocation();MainActivity.this.markMysition();MainActivity.this.setCameraPosition();}// 位置更新private void updateLocation() {if (location != null) {lat = location.getLatitude();lng = location.getLongitude();}}// 将视图镜头定位在我的位置public void setCameraPosition() {// 获取视图镜头cameraPosition = new CameraPosition.Builder().target(new LatLng(lat, lng)) // Sets the center of the map to.zoom(17) // 缩放比例.bearing(0) // Sets the orientation of the camera to east.tilt(20) // Sets the tilt of the camera to 30 degrees.build(); // Creates a CameraPosition from the builder map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosit ion));}// 菜单public boolean onCreateOptionsMenu(Menu menu) {menu.add(0, Menu.FIRST + 1, 1, "获取路线");menu.add(0, Menu.FIRST + 2, 2, "退出");return true;}// 菜单响应public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case Menu.FIRST + 1:// 定义输入框界面editpoint();break;case Menu.FIRST + 2:locationManager.removeUpdates(llistener);this.finish();}return true;}// 获取物理位置private String getLocation(double lat, double lng) {String address = "";String resultString = "";String urlString = String.format("/maps/api/geocode/json?latlng="+ lat + "," + lng + "&sensor=true&language=zh-CN");Log.i("URL", urlString);HttpClient client = new DefaultHttpClient();HttpGet get = new HttpGet(urlString);try {HttpResponse response = client.execute(get);HttpEntity entity = response.getEntity();BufferedReader buffReader = new BufferedReader(new InputStreamReader(entity.getContent()));StringBuffer strBuff = new StringBuffer();String result = null;while ((result = buffReader.readLine()) != null) {strBuff.append(result);}resultString = strBuff.toString();// 解析josn数据,获得物理地址if (resultString != null && resultString.length() > 0) {JSONObject jsonobject = new JSONObject(resultString);JSONArray jsonArray = newJSONArray(jsonobject.get("results").toString());resultString = "";for (int i = 0; i < jsonArray.length(); i++) {resultString = jsonArray.getJSONObject(i).getString("formatted_address");address += resultString;}}} catch (Exception e) {} finally {get.abort();client = null;}return address;}// 通过输入信息解析json获取路线private void getDirection(String start, String endposition) { String DresultString = "";String Durl ="/maps/api/directions/json?origin="+ lat + "," + lng + "&destination=" + endlat + "," + endlng+ "&sensor=true&mode=driving";HttpClient Dclient = new DefaultHttpClient();HttpGet Dget = new HttpGet(Durl);HttpResponse response;try {response = Dclient.execute(Dget);HttpEntity Dentity = response.getEntity();BufferedReader DbuffReader = new BufferedReader(new InputStreamReader(Dentity.getContent()));StringBuffer DstrBuff = new StringBuffer();String Dresult = null;while ((Dresult = DbuffReader.readLine()) != null) {DstrBuff.append(Dresult);}DresultString = DstrBuff.toString();} catch (Exception e) {}try {final JSONObject jsonObject = new JSONObject(DresultString);JSONArray routeArray = jsonObject.getJSONArray("routes");JSONObject routes = routeArray.getJSONObject(0);JSONObject overviewPolylines = routes.getJSONObject("overview_polyline");String encodedString = overviewPolylines.getString("points");Log.d("test: ", encodedString);list = decodePoly(encodedString);} catch (JSONException e) {e.printStackTrace();} catch (ArrayIndexOutOfBoundsException e) {System.err.println("Caught ArrayIndexOutOfBoundsException: "+ e.getMessage());}}// 填写起始地点以得到路线导航private void editpoint() {LayoutInflater factory = LayoutInflater.from(MainActivity.this);// 获得自定义对话框final View view = factory.inflate(yout.getdirections, null);AlertDialog navigate = new AlertDialog.Builder(MainActivity.this) .setIcon(android.R.drawable.ic_menu_edit).setTitle("获取路线").setView(view).setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();EditText st = (EditText)view.findViewById(R.id.start);EditText en = (EditText)view.findViewById(R.id.end);start = st.getText().toString();end = en.getText().toString();progressdialog =ProgressDialog.show(MainActivity.this,"正在获取路线", "请稍等……", true);new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubgetlatlng(end);getDirection("我的位置", end);mHandler.sendEmptyMessage(0);mHandler.sendEmptyMessage(1);}}).start();}}).setNegativeButton("取消", null).create();navigate.show();}// 根据地理名称获得起始点和终点的经纬度private void getlatlng(String end) {StringBuilder stringBuilder = new StringBuilder();try {HttpPost httppost = new HttpPost("/maps/api/geocode/json?address="+ end + "&sensor=false");HttpClient client = new DefaultHttpClient();HttpResponse response;stringBuilder = new StringBuilder();response = client.execute(httppost);HttpEntity entity = response.getEntity();InputStream stream = entity.getContent();int b;while ((b = stream.read()) != -1) {stringBuilder.append((char) b);}} catch (ClientProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}JSONObject jsonObject = new JSONObject();try {jsonObject = new JSONObject(stringBuilder.toString());} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {endlng = ((JSONArray)jsonObject.get("results")).getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getDouble("lng");endlat = ((JSONArray)jsonObject.get("results")).getJSONObject(0).getJSONObject("geometry").getJSONObject("location").getDouble("lat");} catch (Exception e) {e.printStackTrace();}}// 解析json文件里面的polyline下的poly得出导航上面路径的点private List<LatLng> decodePoly(String encoded) {List<LatLng> poly = new ArrayList<LatLng>();int index = 0, len = encoded.length();int lat = 0, lng = 0;while (index < len) {int b, shift = 0, result = 0;do {b = encoded.charAt(index++) - 63;result |= (b & 0x1f) << shift;shift += 5;} while (b >= 0x20);int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));lat += dlat;shift = 0;result = 0;do {b = encoded.charAt(index++) - 63;result |= (b & 0x1f) << shift;shift += 5;} while (b >= 0x20);int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));lng += dlng;LatLng p = new LatLng((lat / 1E5), lng / 1E5);poly.add(p);}return poly;}}。

水经注离线谷歌卫星地图加载服务中间件调用示例ForGoogleAPI

水经注离线谷歌卫星地图加载服务中间件调用示例ForGoogleAPI

水经注离线‎谷歌卫星地‎图加载服务‎中间件调用‎示例For‎Googl‎e API1.说明水经注离线‎谷歌卫星地‎图加载服务‎中间件可利‎用离线地图‎的.dat文件‎在本地建立‎服务端,并生成影像‎、标签、高程等服务‎地址,可以在Go‎o gle API中直‎接调用该服‎务地址,并将请求到‎的服务资源‎显示在前端‎,当请求的地‎图资源不存‎在可通过网‎络直接下载‎缺失的地图‎,并储存在.dat文件‎中。

2.实现2.1准备Go‎ogleM‎a pAPI‎V3下载Goo‎gleMa‎p APIV‎3.rar。

在其目录下‎新建一个h‎t ml文件‎“River‎M apSe‎r verS‎a mple‎For Googl‎e API.html”,如下图。

利用记事本‎打开“River‎M apSe‎r verS‎a mple‎For Googl‎e API.html”并进行编辑‎,具体内容如‎下。

<!DOCTY‎P E html><html><head><meta http-equiv‎="Conte‎n t-Type" conte‎n t="text/html; chars‎e t=utf-8" /><title‎>River‎M apSe‎r verS‎a mple‎For Googl‎e API</title‎><link href="mapfi‎l es/css/defau‎l t.css" rel="style‎s heet‎" type="text/css" /><scrip‎t type="text/javas‎c ript‎" src="mapap‎i.js"></scrip‎t><scrip‎t>funct‎i on tlen(len, mystr‎){mystr‎= Strin‎g(mystr‎);var num = len - mystr‎.lengt‎h;for (var i = 0; i <= num; i++){mystr‎= "0" + mystr‎;}retur‎n mystr‎;};funct‎i on Coord‎M apTy‎p e(tileS‎i ze) {this.tileS‎i ze = tileS‎i ze;}Coord‎M apTy‎p e.proto‎t ype.getTi‎l e = funct‎i on(coord‎, zoom, owner‎D ocum‎e nt) { var div = owner‎D ocum‎e nt.creat‎e Elem‎e nt('DIV');var ymax = 1 << zoom;var y = coord‎.y;y = tlen(5,y);var x = tlen(5,coord‎.x);zoom = tlen(1,zoom+1);div.inner‎H TML = y + "," + x + "," + zoom;div.style‎.width‎= this.tileS‎i ze.width‎+ 'px';div.style‎.heigh‎t = this.tileS‎i ze.heigh‎t + 'px';div.style‎.fontS‎i ze = '10';div.style‎.borde‎r Styl‎e = 'solid‎';div.style‎.borde‎r Widt‎h = '1px';div.style‎.borde‎r Colo‎r = '#AAAAA‎A';retur‎n div;};funct‎i on Local‎M apTy‎p e() {}Local‎M apTy‎p e.proto‎t ype.tileS‎i ze = new googl‎e.maps.Size(256, 256);Local‎M apTy‎p e.proto‎t ype.maxZo‎o m = 20;Local‎M apTy‎p e.proto‎t ype.minZo‎o m = 0;Local‎M apTy‎p e.proto‎ = "本地";Local‎M apTy‎p e.proto‎type.alt = "显示本地地‎图";Local‎M apTy‎p e.proto‎t ype.getTi‎l e = funct‎i on(coord‎, zoom, owner‎D ocum‎e nt) { var img = owner‎D ocum‎e nt.creat‎e Elem‎e nt("img");img.style‎.width‎= this.tileS‎i ze.width‎+ "px";img.style‎.heigh‎t = this.tileS‎i ze.heigh‎t + "px";var ymax = 1 << zoom;var y = coord‎.y;y = tlen(5,y);var x = tlen(5,coord‎.x);zoom = tlen(1,zoom+1);var strUR‎L = "http://127.0.0.1:1002/getDe‎f ined‎I mage‎?" + "x=" + x + "&y=" + y + "&z=" + zoom;img.src = strUR‎L;retur‎n img;};var local‎M apTy‎p e = new Local‎M apTy‎p e();funct‎i on initi‎a lize‎() {var myLat‎l ng = new googl‎tLn‎g(30, 103);var myOpt‎i ons = {cente‎r: myLat‎l ng,zoom: 4,stree‎t View‎C ontr‎o l: false‎,mapTy‎p eCon‎t rolO‎p tion‎s: {m apTy‎p eIds‎: ["local‎", googl‎e.maps.MapTy‎p eId.ROADM‎A P] }};var map = new googl‎e.maps.Map(docum‎e nt.getEl‎e ment‎B yId("map_c‎a nvas‎"), myOpt‎i ons);map.mapTy‎p es.set('local‎', local‎M apTy‎p e);map.setMa‎p Type‎I d('local‎');map.overl‎a yMap‎T ypes‎.inser‎t At(0, new Coord‎M apTy‎p e(new googl‎e.maps.Size(256, 256)));}</scrip‎t></head><body onLoa‎d="initi‎a lize‎()"><div id="map_c‎a nvas‎" style‎="width‎: 640px‎; heigh‎t: 480px‎;"></div></body></html>其中【strUR‎L=”http://local‎h ost:1002/getDe‎f ined‎I mage ‎?”】表示请求的‎是影像、地图、地形、标签、影像+标签、影像+地图、影像+地形或De‎m。

谷歌地图 API

谷歌地图 API

在onCreate中 初始化一个标记(addMarker) LatLng SuZhou = new LatLng(31.2653514, 120.7365586); DecimalFormat df = new DecimalFormat("#.00000"); String title = "经度:" + df.format(titude) + "\n 纬度:" + df.format(SuZhou.longitude); CameraPosition suzhou = new CameraPosition.Builder().target(SuZhou).zoom(15.5f).bearing(300).tilt(50).build(); //添加一个标记 mMap.addMarker(new MarkerOptions().position(SuZhou).title(title)); //使用动画定位在标记点 mMap.animateCamera(CameraUpdateFactory.newCameraPosition(suzhou));
完成以上操作还不能显示地图,还需如下操作:
首先需要把Google Play services的类库加载进来: 在 android-sdk的目录下 /extras/google/google_play_services/libproject/google-play-services_lib 把google-play-services_lib 拷贝出来。(防止影响android-sdk目录) 注意:google-play-services_lib 项目一定跟你自己创建的项目在同一目录 下,否则类库无法添加。 假如google-play-services_lib拷贝在workspace中的,在Eclipse里面选择: File > Import > Android > Existing Projects Into Workspace然后点击Next. 之后Browse..., 找到路径下的google-play-services_lib, 然后选择Finish。 如不在workspace下则选择Existing Android Code Into Workspace添加。 第二步是添加对这个库的引用: 在自己的项目上右键,选Properties,左边选Android,然后在下面的 Library里面Add刚才的google-play-services_lib。

GoogleMapApi谷歌地图接口整理

GoogleMapApi谷歌地图接口整理

GoogleMapApi⾕歌地图接⼝整理⼀:基本知识:1. 使⽤⾕歌地图 API 的第⼀步就是要注册⼀个 API 密钥,需要注重⼀下两点:1.假如使⽤ API 的页⾯还没有发布,只是在本地调试,可以不⽤密钥,随便⽤个字符串代替就可以了。

2.API 密钥只对⽹站⽬录或者域有效。

对不同域的⽹页,需要⽤这些域分别注册不同的密钥2.页⾯引⽤javascript⽂件<script src="/maps?file=api&hl=zh-CN&v=2&key=abcdefg" type="text/javascript"></script>:也可以⽤,假如你需要在地图上显⽰⼤陆以外的具体地图,就⽤ 2.file=api 这个是请求API 的JS ⽂件⽤的,固定的格式。

3.hl=zh-CN这个是在设定地图上除了地图图⽚以外的诸如控件名称、版权声明、使⽤提⽰等所需要显⽰⽂本的语⾔版本时候⽤的,假如没有指定这个参数就使⽤ API 的默认值,对 来说,默认是中⽂简体 默认的是英⽂。

4. v=2这个是⽤来指定需要导⼊的 API 类库的版本号,可以有四种设定⽅式:v=2.s 稳定版本,更新最慢,但是最可靠;v=2 当前版本(只⽤主版本号),更新速度和可靠性介于 s 和 x 之间v=2.x 最新版本,更新最快,包括最新功能,可能没有当前版本可靠;v=2.76 指定具体版本。

不建议使⽤。

注:⽬前⾕歌地图 API的主版本号是2,当API升级时旧版本只能继续使⽤⼀个⽉,所以要及时更改主版本号,版本号改变会在Google Code和Maps API讨论组发布相关信息5.key=abcdefg这个是设定你注册的 API 密钥.⼆:核⼼类:google地图API主要包括:地图类(GMap2)、标记类(GMarker)、标记选项类(GMarkerOptions)、折线类(GPolyline)、经纬度(GLatLng)、命名空间(GEvent)、坐标类(GPoint)、控件的⼤⼩类GSize、 interface(GControl)、地图类型类(GMapType)、地图上⾯的图标类(GIcon)、窗体类(GInfoWindow)、窗体选项类 GInfoWindowOptions)、接⼝GOverlay、枚举GMapPane等等注:标记和折线都是地图的覆盖物1.GMap2:地图类,下⾯实例化⼀张地图:var map= new GMap2(container: DOM_Div,opts: Options);构造函数的参数如下:参数是否必要值类型定义container 是 DOM_Div DOM元素,是个Divopts 可选 Options 构造函数选项GMap2包含的⽅法:1.设置状态的⽅法:enableDragging():设置地图可以被拖动。

如何在内网离线发布全国谷歌高清卫星影像瓦片

如何在内网离线发布全国谷歌高清卫星影像瓦片

如何在内网离线发布全国谷歌高清卫星影像地图瓦片1.概述对于GIS行业从业者来讲,对于地图发布可能并不陌生。

其实所谓地图发布,就是指在互联网或局域网服务器中,通过IIS、Apache或ArcGIS Server等系统服务为地图瓦片分配唯一URL地址的过程。

地图发布后可以结合百度离线API或谷歌离线API等开源平台方便地部署百度离线地图、谷歌离线地图、三维离线地球并进行离线GIS系统开发等。

IIS发布从客户在水经注软件使用的反馈我们了解到,大家习惯于将谷歌卫星影像地图导出为ArcGIS Server 瓦片进行发布,然后用ArcGIS 客户端或其它GIS平台进行开发调用。

以上方式没有错,但从我们的项目开发经验来看,这种方式应用于范围较小的区域还是可以接受的,但如果范围大于一省,比如全国甚至全球,这种方式就很不适用了。

我们曾经为一个客户导出了一个省的瓦片,瓦片文件个数上亿张,几周也没能把文件拷贝完,安装部署极为不便。

ArcGIS Server 发布那么不将谷歌卫星影像导出为瓦片,还有其它更好的方法吗?答案当然是肯定的,正是因为我们有了上面所述痛点,后来才研发了《水经注地图发布服务中间件》产品。

该中间件可以直接离线发布全国谷歌卫星影像,不需要IIS、Apache或ArcGIS Server 服务支持,也不需要任何数据支持,效率远高于MBTile瓦片数据库,它可以快速地为你构建一个离线的谷歌地球服务器。

中间件界面这里,我们就对如何使用《水经注地图发布服务中间件》,并在内网离线离发布全国7.01TB谷歌高清影像进行详细说明。

2.全国谷歌高清卫星影像地图数据准备水经注现有全国谷歌高清卫星影像地图数据1-19级7.01TB,该数据用一个8T硬盘就能存储。

在地图发布之前,可以用《水经注万地图下载器》对其进行离线浏览,先检查全国卫星影像数据的覆盖范围、数据的完整性和影像的清晰度等。

具体方法请参阅:如何离线浏览全国7137GB海量谷歌卫星离线影像?https:///s/PSM7OSXLyRxVRqE-Nr-GqA全国卫星影像覆盖范围另外,还可以随时将指定区域的影像数据导出为大图、手机离线包或瓦片等,具体方法请参阅:如何从全国7.01TB海量谷歌卫星离线地图中导出北京市的卫星影像https:///s/4Ezv6SMdsv6CoAV-Ce4raA离线导出北京卫星影像如果你现在没有全国谷歌高清卫星影像地图数据,那么也可以用《水经注万能地图下载器》下载,具体方法请参阅:如何一次性下载全国谷歌卫星影像地图数据https:///s/_W-4_K5lNJ7tjS59X_I94w全国谷歌卫星影像数据文件3.全国谷歌高清卫星影像地图数据发布全国谷歌高清卫星影像地图数据准备好之后,需要下载安装水经注地图发布服务中间件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何用Google离线API调用离线地图
这里以云南保山市为例,说明如何用谷歌离线API调用离线地图。

首先,点击视图左上方的地图类型按钮选择谷歌地图(如果没有该项请点击“更多”选项),然后在视图右上方选择云南省保山市显示行政区划,最后点击“下载”按钮显示“新建任务”对话框。

一般情况下,从新建任务时行政区划显示的级别开始,一直选择到第19级,但这里我们只以选择到第14有为例。

在“新建任务”对话框中点击“导出设置”显示参数设置对话框,在该对话框中选择瓦片类型为TMS瓦片,文件格式为PNG,坐标投影为WGS84 Web 墨卡托投影,背景色为透明。

分别点击“确定”按钮之后开始下载数据,在下载过程中可以即时查看下载结果。

下载完成后,会根据新建任务时的参数设置导出谷歌TMS瓦片。

将导出结果文件夹复制到谷歌离线API目录中。

启动一个WebGIS开发工具,这里以Visual Studio Code 开发工具为例。

点击“文件”菜单中的“打开文件夹”菜单。

相关文档请参阅:
如何下载安装WebGIS开发工具Visual Studio Code
浏览到百度离线API目录之后,点击“选择文件夹”按钮打开百度离线API 工程源码。

谷歌离线API源码工程加载完成之后,在map.js文件中将原离线地图文件夹“googleTMS”修改为当前离线地图文件夹,这里修改为“保山市谷歌地图TMS瓦片”并保存修改。

双击谷歌离线API源码中的map.html文件可打开显示离线地图。

用谷歌离线API源码成功加载云南省保山市离线地图之后,效果如下图所示。

相关内容请参阅:
Google离线API的在线地图调用示例。

相关文档
最新文档