——摘自百度地图http://dev.baidu.com/wiki/imap/index.php?title=%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
.如何计算两点之间距离
路线规划提供了获取路线距离的方法,见MKRoutePlan 类的 getDistance 方法。如果是计算任意两点的距离,有两种方法:一种利用勾股定理计算,适用于两点距离很近的情况;一种按标准的球面大圆劣弧长度计算,适用于距离较远的情况。
static double DEF_PI = 3.14159265359; // PI static double DEF_2PI = 6.28318530712; // 2*PI static double DEF_PI180 = 0.01745329252; // PI/180.0 static double DEF_R = 6370693.5; // radius of earth public double GetShortDistance(double lon1, double lat1, double lon2, double lat2) { double ew1, ns1, ew2, ns2; double dx, dy, dew; double distance; // 角度转换为弧度 ew1 = lon1 * DEF_PI180; ns1 = lat1 * DEF_PI180; ew2 = lon2 * DEF_PI180; ns2 = lat2 * DEF_PI180; // 经度差 dew = ew1 - ew2; // 若跨东经和西经180 度,进行调整 if (dew > DEF_PI) dew = DEF_2PI - dew; else if (dew < -DEF_PI) dew = DEF_2PI + dew; dx = DEF_R * Math.cos(ns1) * dew; // 东西方向长度(在纬度圈上的投影长度) dy = DEF_R * (ns1 - ns2); // 南北方向长度(在经度圈上的投影长度) // 勾股定理求斜边长 distance = Math.sqrt(dx * dx + dy * dy); return distance; } public double GetLongDistance(double lon1, double lat1, double lon2, double lat2) { double ew1, ns1, ew2, ns2; double distance; // 角度转换为弧度 ew1 = lon1 * DEF_PI180; ns1 = lat1 * DEF_PI180; ew2 = lon2 * DEF_PI180; ns2 = lat2 * DEF_PI180; // 求大圆劣弧与球心所夹的角(弧度) distance = Math.sin(ns1) * Math.sin(ns2) + Math.cos(ns1) * Math.cos(ns2) * Math.cos(ew1 - ew2); // 调整到[-1..1]范围内,避免溢出 if (distance > 1.0) distance = 1.0; else if (distance < -1.0) distance = -1.0; // 求大圆劣弧长度 distance = DEF_R * Math.acos(distance); return distance; } double mLat1 = 39.90923; // point1纬度 double mLon1 = 116.357428; // point1经度 double mLat2 = 39.90923;// point2纬度 double mLon2 = 116.397428;// point2经度 double distance = GetShortDistance(mLon1, mLat1, mLon2, mLat2);
/**
* 查询手机内所有支持分享的应用
* @param context
* @return
*/
public static List<ResolveInfo> getShareApps(Context context){
List<ResolveInfo> mApps = new ArrayList<ResolveInfo>();
Intent intent=new Intent(Intent.ACTION_SEND,null);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("text/plain");
PackageManager pManager = context.getPackageManager();
mApps = pManager.queryIntentActivities(intent,PackageManager.COMPONENT_ENABLED_STATE_DEFAULT);
return mApps;
}
由于该方法,返回的并不是 PackageInfo 对象。而是 ResolveInfo。因此获取图片、应用名、包名的方法不一样,如下:
PackageManager pManager = MessageSendActivity.this.getPackageManager();
/*********************查询手机内所有支持分享的应用*********************/
List<ResolveInfo> resolveList = Utils.getShareApps(MessageSendActivity.this);
for(int i=0;i<resolveList.size();i++) {
ResolveInfo resolve = resolveList.get(i);
ShareItemInfo shareItem = new ShareItemInfo();
//set Icon
shareItem.setIcon(resolve.loadIcon(pManager));
//set Application Name
shareItem.setLabel(resolve.loadLabel(pManager).toString());
//set Package Name
shareItem.setPackageName(resolve.activityInfo.packageName);
}
总结:
通过 PackageInfo 获取具体信息方法:
包名获取方法:packageInfo.packageName
icon获取获取方法:packageManager.getApplicationIcon(applicationInfo)
应用名称获取方法:packageManager.getApplicationLabel(applicationInfo)
使用权限获取方法:packageManager.getPackageInfo(packageName,PackageManager.GET_PERMISSIONS)
.requestedPermissions
通过 ResolveInfo 获取具体信息方法:
包名获取方法:resolve.activityInfo.packageName
icon获取获取方法:resolve.loadIcon(packageManager)
应用名称获取方法:resolve.loadLabel(packageManager).toString()
1、MCC(Mobile Country Code,移动国家号码),用于唯一地标识移动客户属于的国家。它由三位十进制数组成(000-999),例如我国的MCC为460。
全部MCC:
MCC Name 412 AF Afghanistan 276 AL Albania 603 DZ Algeria 544 AS American Samoa(US) 213 AD Andorra 631 AO Angola 365 AI Anguilla 344 AG Antigua and Barbuda 722 AR Argentine Republic 283 AM Armenia 363 AW Aruba(Netherlands) 505 AU Australia 232 AT Austria 400 AZ Azerbaijani Republic 364 BS Bahamas 426 BH Bahrain 470 BD Bangladesh 342 BB Barbados 257 BY Belarus 206 BE Belgium 702 BZ Belize 616 BJ Benin 350 BM Bermuda(UK) 402 BT Bhutan 736 BO Bolivia 218 BA Bosnia and Herzegovina 652 BW Botswana 724 BR Brazil 348 VG British Virgin Islands(UK) 528 BN Brunei Darussalam 284 BG Bulgaria 613 BF Burkina Faso 642 BI Burundi 456 KH Cambodia 624 CM Cameroon 302 CA Canada 625 CV Cape Verde 346 KY Cayman Islands(UK) 623 CF Central African Republic 622 TD Chad 730 CL Chile 460 CN China 461 CN China 732 CO Colombia 654 KM Comoros 629 CG Republic of the Congo 548 CK Cook Islands(NZ) 712 CR Costa Rica 612 CI Côte d'Ivoire 219 HR Croatia 368 CU Cuba 362 CW Curaçao(Netherlands) 280 CY Cyprus 230 CZ Czech Republic 630 CD Democratic Republic of the Congo 238 DK Denmark 638 DJ Djibouti 366 DM Dominica 370 DO Dominican Republic 514 TL East Timor 740 EC Ecuador 602 EG Egypt 706 SV El Salvador 627 GQ Equatorial Guinea 657 ER Eritrea 248 EE Estonia 636 ET Ethiopia 750 FK Falkland Islands(Malvinas) 288 FO Faroe Islands(Denmark) 542 FJ Fiji 244 FI Finland 208 FR France 742 GF French Guiana(France) 547 PF French Polynesia(France) 628 GA Gabonese Republic 607 GM Gambia 282 GE Georgia 262 DE Germany 620 GH Ghana 266 GI Gibraltar(UK) 202 GR Greece 290 GL Greenland(Denmark) 352 GD Grenada 340 GP Guadeloupe(France) 535 GU Guam(US) 704 GT Guatemala 611 GN Guinea 632 GW Guinea-Bissau 738 GY Guyana 372 HT Haiti 708 HN Honduras 454 HK Hong Kong(PRC) 216 HU Hungary 274 IS Iceland 404 IN India 405 IN India 406 IN India 510 ID Indonesia 432 IR Iran 418 IQ Iraq 272 IE Ireland 425 IL Israel 222 IT Italy 338 JM Jamaica 441 JP Japan 440 JP Japan 416 JO Jordan 401 KZ Kazakhstan 639 KE Kenya 545 KI Kiribati 467 KP Korea, North 450 KR Korea, South 419 KW Kuwait 437 KG Kyrgyz Republic 457 LA Laos 247 LV Latvia 415 LB Lebanon 651 LS Lesotho 618 LR Liberia 606 LY Libya 295 LI Liechtenstein 246 LT Lithuania 270 LU Luxembourg 455 MO Macau(PRC) 294 MK Republic of Macedonia 646 MG Madagascar 650 MW Malawi 502 MY Malaysia 472 MV Maldives 610 ML Mali 278 MT Malta 551 MH Marshall Islands 340 MQ Martinique(France) 609 MR Mauritania 617 MU Mauritius 334 MX Mexico 550 FM Federated States of Micronesia 259 MD Moldova 212 MC Monaco 428 MN Mongolia 297 ME Montenegro(Republic of) 354 MS Montserrat(UK) 604 MA Morocco 643 MZ Mozambique 414 MM Myanmar 649 NA Namibia 536 NR Nauru 429 NP Nepal 204 NL Netherlands 546 NC New Caledonia(France) 530 NZ New Zealand 710 NI Nicaragua 614 NE Niger 621 NG Nigeria 534 MP Northern Mariana Islands(US) 242 NO Norway 422 OM Oman 410 PK Pakistan 552 PW Palau 425 PS Palestine 714 PA Panama 537 PG Papua New Guinea 744 PY Paraguay 716 PE Perú 515 PH Philippines 260 PL Poland 268 PT Portugal 330 PR Puerto Rico(US) 427 QA Qatar 647 RE Réunion(France) 226 RO Romania 250 RU Russian Federation 635 RW Rwandese Republic 356 KN Saint Kitts and Nevis 358 LC Saint Lucia 308 PM Saint Pierre and Miquelon(France) 360 VC Saint Vincent and the Grenadines 549 WS Samoa 292 SM San Marino 626 ST São Tomé and Príncipe 420 SA Saudi Arabia 608 SN Senegal 220 RS Serbia(Republic of) 633 SC Seychelles 619 SL Sierra Leone 525 SG Singapore 231 SK Slovakia 293 SI Slovenia 540 SB Solomon Islands 637 SO Somalia 655 ZA South Africa 214 ES Spain 413 LK Sri Lanka 634 SD Sudan 746 SR Suriname 653 SZ Swaziland 240 SE Sweden 228 CH Switzerland 417 SY Syria 466 TW Taiwan 436 TJ Tajikistan 640 TZ Tanzania 520 TH Thailand 615 TG Togolese Republic 539 TO Tonga 374 TT Trinidad and Tobago 605 TN Tunisia 286 TR Turkey 438 TM Turkmenistan 376 TC Turks and Caicos Islands(UK) 641 UG Uganda 255 UA Ukraine 424 AE United Arab Emirates 430 AE United Arab Emirates 431 AE United Arab Emirates 235 GB United Kingdom 234 GB United Kingdom 310 US United States of America 311 US United States of America 312 US United States of America 313 US United States of America 314 US United States of America 315 US United States of America 316 US United States of America 332 VI United States Virgin Islands(US) 748 UY Uruguay 434 UZ Uzbekistan 541 VU Vanuatu 225 VA Vatican City State 734 VE Venezuela 452 VN Viet Nam 543 WF Wallis and Futuna(France) 421 YE Yemen 645 ZM Zambia 648 ZW Zimbabwe
2、MNC(Mobile Network Code,移动网络号码),用于识别移动客户所属的移动网络。
格式
MNC由二个十进制数组成,编码范围为十进制的00-99,例如中国移动的MNC为00,中国联通的MNC为01。
传送
移动网号用于国际移动用户识别(IMSI)和位置区识别(LAI)之中。 l 位置区识别(LAI)。位置区识别在每个小区广播的系统消息中周期发送,其中的移动网号(MNC)表示GSMPLMN的网络号。移动台将接收到的该信息作为网络选择的重要依据之一。
移动台的IMSI。移动台的IMSI中同样包含了移动网号(MNC),它表示该移动用户所属的GSMPLMN网。当移动台在网络上登录或申请某种业务时,移动台必须将IMSI报告给网络(在不能使用TMIS的情况下)。网络则根据IMSI中的移动网号(MNC)来判断该用户是否为漫游用户,并将MNC作为寻址用户HLR的重要参数之一。
设置及影响
若一个国家中有多于一个的GSM公司陆地移动网(PLMN),则每个网必须具有不同的MNC。MNC一般由国家的有关电信管理部门统一分配,同一个营运者可以拥有一个或多个MNC(视业务提供的规模而定),但不同的营运者不可以分享相同的MNC。目前中国有两个GSM网络,分别由中国移动和中国联通公司营运,他们的MNC分别是00和01。
由于MNC的特殊意义,因此它在网络中一旦设定是不允许更改的。
MNC常用值:
00, "CHINA MOBILE", "CN" 中国移动
01, "CHN-CUGSM", "CN" 中国联通
02, "CHINA MOBILE", "CN" 中国移动 (TD)
03, "CHINA TELECOM", "CN" 中国电信