Android自定义地图示例:QQ地图


来一个简单一些的自定义地图类型示例:QQ地图,QQ地图URL规则比较简单。1-17级都是有一层组成,选用GENERIC_MAPTYPE_5作为QQ地图类型,直接在CustomMap修改代码如下:
  1. package com.pstreets.gisengine.demo;  
  2. import com.mapdigit.gis.raster.ICustomMapType;  
  3. import com.mapdigit.gis.raster.MapType;  
  4. import com.mapdigit.gis.geometry.GeoLatLng;  
  5. import com.pstreets.gisengine.R;  
  6. import com.pstreets.gisengine.SharedMapInstance;  
  7. import Android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.view.Menu;  
  10. import android.view.MenuInflater;  
  11. import android.view.MenuItem;  
  12.    
  13. public class CustomMap extends Activity {  
  14.    
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.     }  
  20.    
  21.     @Override  
  22.     public void onStart() {  
  23.         super.onStart();  
  24.         MapType.setCustomMapTileUrl(new TiandiMapType());  
  25.         GeoLatLng center = new GeoLatLng(32.0616667118.7777778);  
  26.         SharedMapInstance.map.setCenter(center, 13, MapType.GENERIC_MAPTYPE_5);  
  27.    
  28.     }  
  29.    
  30.     @Override  
  31.     public boolean onCreateOptionsMenu(Menu menu) {  
  32.         MenuInflater inflater = getMenuInflater();  
  33.         inflater.inflate(R.menu.mapzoom_menu, menu);  
  34.         return true;  
  35.     }  
  36.    
  37.     @Override  
  38.     public boolean onOptionsItemSelected(MenuItem item) {  
  39.         // Handle item selection   
  40.         switch (item.getItemId()) {  
  41.         case R.id.zoomin:  
  42.             SharedMapInstance.map.zoomIn();  
  43.    
  44.             return true;  
  45.         case R.id.zoomout:  
  46.             SharedMapInstance.map.zoomOut();  
  47.             return true;  
  48.    
  49.         default:  
  50.             return super.onOptionsItemSelected(item);  
  51.         }  
  52.    
  53.     }  
  54.    
  55. }  
  56.    
  57. class TiandiMapType implements ICustomMapType {  
  58.    
  59.     private static int serverIndex=1;  
  60.    
  61.     public String getTileURL(int mtype, int x, int y, int zoomLevel) {  
  62.         String returnURL="";  
  63.         serverIndex+=1;  
  64.         serverIndex%=3;  
  65.         int maxTiles=(int)Math.pow(2, zoomLevel);  
  66.         switch(mtype){  
  67.             case MapType.GENERIC_MAPTYPE_5:  
  68.                  returnURL= "http://p"  
  69.                      + serverIndex+".map.qq.com/maptiles/" ;  
  70.                  y=maxTiles-y-1;  
  71.                  returnURL+=+zoomLevel  
  72.                    +"/"+(int)(x/16)+"/"+(int)(y/16)+"/"+x+"_"+y+".gif";  
  73.                 break;  
  74.             case MapType.GENERIC_MAPTYPE_6:  
  75.    
  76.                 if(zoomLevel<11){  
  77.                    returnURL= "http://tile"  
  78.                        + serverIndex+".tianditu.com/DataServer?T=A0512_EMap";  
  79.                    returnURL+="&X="+x+"&Y="+y+"&L="+zoomLevel;  
  80.    
  81.                 }else if(zoomLevel<13){  
  82.                    returnURL= "http://tile"  
  83.                        + serverIndex+".tianditu.com/DataServer?T=B0627_EMap1112";  
  84.                    returnURL+="&X="+x+"&Y="+y+"&L="+zoomLevel;  
  85.                 }else{  
  86.                    returnURL= "http://tile"  
  87.                        + serverIndex+".tianditu.com/DataServer?T=siwei0608";  
  88.                    returnURL+="&X="+x+"&Y="+y+"&L="+zoomLevel;  
  89.                 }  
  90.    
  91.                 break;  
  92.             case MapType.GENERIC_MAPTYPE_7:  
  93.                 if(zoomLevel<11){  
  94.                    returnURL= "http://tile"  
  95.                        + serverIndex+".tianditu.com/DataServer?T=AB0512_Anno";  
  96.                    returnURL+="&X="+x+"&Y="+y+"&L="+zoomLevel;  
  97.                 }else{  
  98.                    returnURL=MapType.EMPTY_TILE_URL;  
  99.                 }  
  100.    
  101.                 break;  
  102.    
  103.         }  
  104.         return returnURL;  
  105.     }  
  106.    
  107. }  

QQ地图的分片方法和Google中国地图分片方法一致,经纬度坐标无需调整。

相关内容

    暂无相关文章