ServiceLocationFragment.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604
  1. package com.usai.apex;
  2. //
  3. //import com.google.android.gms.maps.GoogleMap;
  4. //import com.google.android.gms.maps.MapFragment;
  5. //import com.google.android.gms.maps.SupportMapFragment;
  6. //import com.google.android.gms.maps.model.LatLng;
  7. //import com.google.android.gms.maps.model.MarkerOptions;
  8. import android.Manifest;
  9. import android.content.Context;
  10. import android.content.Intent;
  11. import android.content.pm.PackageManager;
  12. import android.location.Location;
  13. import android.location.LocationListener;
  14. import android.location.LocationManager;
  15. import android.os.AsyncTask;
  16. import android.os.Bundle;
  17. import android.support.v4.app.ActivityCompat;
  18. import android.support.v4.app.Fragment;
  19. import android.support.v4.app.FragmentManager;
  20. import android.util.Log;
  21. import android.view.Gravity;
  22. import android.view.LayoutInflater;
  23. import android.view.View;
  24. import android.view.ViewGroup;
  25. import android.widget.TextView;
  26. import android.widget.Toast;
  27. import com.google.android.gms.maps.CameraUpdateFactory;
  28. import com.google.android.gms.maps.GoogleMap;
  29. import com.google.android.gms.maps.GoogleMap.InfoWindowAdapter;
  30. import com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener;
  31. import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
  32. import com.google.android.gms.maps.OnMapReadyCallback;
  33. import com.google.android.gms.maps.SupportMapFragment;
  34. import com.google.android.gms.maps.model.BitmapDescriptorFactory;
  35. import com.google.android.gms.maps.model.CameraPosition;
  36. import com.google.android.gms.maps.model.LatLng;
  37. import com.google.android.gms.maps.model.Marker;
  38. import com.google.android.gms.maps.model.MarkerOptions;
  39. import com.usai.util.Network;
  40. import org.json.JSONException;
  41. import org.json.JSONObject;
  42. import java.util.HashMap;
  43. //import android.app.Fragment;
  44. //import android.app.FragmentManager;
  45. //import android.app.FragmentManager;
  46. //import android.app.Fragment;
  47. //import android.app.FragmentManager;
  48. //import android.app.FragmentManager;
  49. //import android.support.v4.app.FragmentManager;
  50. public class ServiceLocationFragment extends Fragment implements
  51. OnMarkerClickListener, OnInfoWindowClickListener, OnMapReadyCallback,LocationListener {
  52. private SearchTask m_task = null;
  53. String fragment_content = null;
  54. HashMap<String, LocationDetail> marker_detail = new HashMap<String, LocationDetail>();
  55. static final CameraPosition US = new CameraPosition.Builder()
  56. .target(new LatLng(
  57. 39.833333,
  58. -98.3583333))
  59. .zoom(2.5f)
  60. .bearing(0)
  61. .tilt(0)
  62. .build();
  63. private SupportMapFragment fragment;
  64. private GoogleMap map;
  65. // String locations = "Apex Maritime Co. (ORD) Inc.';'Chicago, IL\nUnited States';'42.051169,-88.0317029';'1900 E. Golf Road, Suite# 1105 Schaumburg, IL 60173';'Tel:+1 630 227-9818';'Fax:+1 630 227-9808';'Contact:\nSteve Yeh\nAileen Hsieh';'Email:\nsteve.yeh@apexshipping.com\naileen.hsieh@apexshipping.com';'Apex Maritime Co. (Hou) Inc.';'Houston, TX\nUnited States';'29.797022,-95.528827';'9610 Long Point Rd., Suite# 320 Houston, TX 77055';'Tel:+1 832 649-8198';'Fax:+1 832 649-8194';'Contact:\nAndy Pan\nTong Tong';'Email:\nandy.pan@apexshipping.com\ntong.tong@apexshipping.com';'Apex Maritime Co. (LAX) Inc.';'Los Angeles, CA\nUnited States';'34.0092709,-117.8463627';'565 Brea Canyon Road, Suite D Walnut, CA 91789';'Tel:+1 909 594-8828';'Fax:+1 909 594-9199';'Contact:\nVincent Luo\nSteven Chow';'Email:\nvincent.luo@apexshipping.com\nsteven.chow@apexshipping.com';'Apex Shipping Co., (NYC) Inc.';'New York, NY\nUnited States';'40.668404,-73.708329';'20 North Central Ave., 2nd FL, Suite# D Valley Stream, NY 11580';'Tel:516-200-9500';'Fax:516-200-9510';'Contact:\nWei Sun\nIrene Tseng';'Email:\nwei.sun@apexshipping.com\nirene.tseng@apexshipping.com';'Apex Maritime Co., Inc.';'San Francisco, CA\nUnited States';'37.646374,-122.398847';'206 Utah Ave. So. San Francisco, CA 94080';'Tel:650-589-2575';'Fax:650-589-8861';'Contact:\nJames Chu\nEsther Hui';'Email:\njames.chu@apexshipping.com\nesther.hui@apexshipping.com';'Apex Maritime Co., (PNW) Inc.';'Seattle, WA\nUnited States';'47.467763,-122.2321';'1107 S. W. Grady Way, Building B, Suite #110 Renton, WA 98055';'Tel:206-241-0771';'Fax:206-241-0823';'Contact:\nMike Langley\nRobert Bleck';'Email:\nmike.langley@apexshipping.com\nrobert.bleck@apexshipping.com';'Apex Maritime (Thailand) Co., Ltd.';'Bangkok, Thailand\nSoutheast Asia';'13.7308333,100.5241667';'138 Boonmitr Bldg., 12th Fl. Room B3, Silom Rd., Suriyawongse, Bangrak, Bangkok 10500';'Tel:+66 2 2634-3899 (Auto)';'Fax:+66 2 2634-3055\n66 2 2634-3056';'Contact:\nThikarn\nJaruwan\nSantana';'Email:\nthikarn@apexmaritime.co.th\njaruwan@apexmaritime.co.th\nsantana@apexmaritime.co.th';'PT. Apex Maritim Indonesia';'Cirebon, Indonesia\nSoutheast Asia';'-6.7166667,108.5666667';'HOTEL BUMI ASIH 2 ND FLOOR # 209 JL. WAHIDIN NO. 52 CIREBON';'Tel:+62 231 207278';'Fax:+62 231 207287';'Contact:\nSOEGIHARTO';'Email:\napex_cirebon@apex-indonesia.com';'Apex Vietnam';'Da Nang, Vietnam\nSoutheast Asia';'16.0641802,108.1873407';'3 FL, 39-41 Quang Trung Street Hai Chau Dist., Danang City, Vietnam';'Tel:+84 511 3896403';'Fax:+84 511 3823563';'Contact:\nMs. LAI';'Email:\ndanang@apexshipping.com.vn';'Apex Vietnam';'Haiphong, Vietnam\nSoutheast Asia';'20.861361,106.679802';'6th FL, 452 Le Thanh Tong Street Ngo Quyen District, Haiphong City, Vietnam';'Tel:+84 31 3750152';'Fax:+84 31 3836796';'Contact:\nMr. Nguyen Nhat Tan\nMr. Nguyen Nhat Huy';'Email:\nhaiphong@apexshipping.com.vn';'Apex Vietnam';'Hanoi, Vietnam\nSoutheast Asia';'21.0333333,105.85';'2nd FL. 108 Lo Duc Street. Hai Ba Trung District. Hanoi City, Vietnam';'Tel:+84 4 3971-9128';'Fax:+84 4 3971-9129';'Contact:\nMs. Le Thu Phuong';'Email:\nhanoi@apexshipping.com.vn';'Maritime Bank Tower ';'Ho Chi Minh City, Vietnam\nSoutheast Asia';'10.7685558,106.7012357';'Maritime Bank Tower 22th floor, room 02 180-192 Nguyen Cong Tru St., District 1 Hochiminh City, Vietnam';'Tel:+84 8 3914 2224';'Fax:+84 8 3914 3228\n3229';'Contact:\nThomas Phong';'Email:\nthomas@apexshipping.com.vn';'PT. Apex Shipping Indonesia';'Jakarta, Indonesia\nSoutheast Asia';'-6.225246,106.597423';'JIn. Bulevar Gajah Mada No. 2087 Lippo Cyberpark, Lippo Karawaci Tangerang 15811, Indonesia';'Tel:+62 21 558-2427';'Fax:+62 21 5577-1362';'Contact:\nNigolas Sjahputra\nUmi';'Email:\nnigolas@apex-indonesia.com\numi@apex-indonesia.com';'Apex Container Line (M) SDN BHD';'Malaysia\nSoutheast Asia';'1.3814563,103.4800838';'Suite 23A-05, level 23A, City Square, Jln Wong Ah Fook, 80000 Johor Bahru, Hohor, West Malaysia.';'Tel:(60) 7 222-2248 ( 6 lines)';'Fax:(60) 7 222-2278 (2 lines)';'Contact:\nFong Yee Chong';'Email:\nchloe.chong@apexshipping.com.my';'PT. Apex Maritim Indonesia';'Semarang, Indonesia\nSoutheast Asia';'-7.0016889,110.4331614';'RUKO METRO PLAZA JL. MT. HARYONO 970 BLOK C-7';'Tel:+62 24 844-7555';'Fax:+62 24 844-7666';'Contact:\nM. AYUB';'Email:\nm_ayub@apex-indonesia.com';'PT. Apex Maritim Indonesia';'Surabaya, Indonesia\nSoutheast Asia';'-7.289166,112.734398';'RUKO PERMATA BINTORO JL. TAMAN KETAMPON NO. 87 SURABAYA �C INDONESIA';'Tel:+62 31 566-1144';'Fax:+62 31 566-8289\n+62 31 566-9933';'Contact:\nIKA';'Email:\nika_setiawan@apex-indonesia.com';'Apex Maritime (Dalian) Co., Ltd.';'Dalian, China\nNorthern China';'38.9218515,121.6561693';'Room 201 No.1-3 No.112 Zhigong Street, Zhongshan Dis. Dalian, China';'Tel:+86 411 88866116 (Main)';'Fax:+86 411 82717900 (OP Dep.)';'Contact:\nWillis Yan �C +86 411 88866118\nJulia Guan �C +86 411 88866136';'Email:\nwillis.yan@apexshipping.com.cn\njulia.guan@apexshipping.com.cn';'Apex Maritime (Lianyungang) Co., Ltd.';'Lianyungang, China\nNorthern China';'34.596544,119.221282';'Room 715, No. 1 Street Building. Wangtian Haicheng Square. Xugou Lianyungang, Jiangsu, China';'Tel:+86 518 8223-3218\n+86 518 8223-3219';'Fax:+86 518 8223-3220';'Contact:\nZena Zheng';'Email:\nzena.zheng@apexshipping.com.cn';'Qingdao Apex Shipping Co., Ltd.';'Qingdao, China\nNorthern China';'36.0565576,120.3709705';'Suite 1903, No. 5 Donghai West Road Qingdao City, 266071, Shandong Province, China';'Tel:+86 532 85708982, 85708595, 85708109, 81979902';'Fax:+86 532 85708110';'Contact:\nFrank Song\nJennifer Liu';'Email:\nfrank.song@apexshipping.com.cn\njennifer.liu@apexshipping.com.cn';'Apex Maritime (Tianjin) Co., Ltd.';'Tianjin, China\nNorthern China';'39.1186127,117.1973693';'Room 3506, The Exchange North Tower, 189 Nanjin Rd. Tianjin, China';'Tel:+86 22 5886 3000';'Fax:+86 22 5886 3006\n5886 3008';'Contact:\nLucy Diao\nMandy Miao';'Email:\nlucy.diao@apexshipping.com.cn\nmandy.miao@apexshipping.com.cn';'Apex Maritime (Xian) Co., Ltd.';'Xian, China\nNorthern China';'34.2368419,108.8988572';'Room 912, Building C, Fortune Center II Gao Xin Third Rd., Hi-Tech Development Zone Xian City, Shaanxi Province,China 710075';'Tel:+86 29 65676809\n65676810\n65676811\n65676812';'Fax:+86 29 65676805';'Contact:\nKaren Huang';'Email:\nkaren.huang@apexshipping.com.cn';'Apex Maritime (Yantai) Co., Ltd.';'Yantai, China\nNorthern China';'37.5422926,121.3947602';'Room 2301, Huaxia Media Mansion, No. 53 North Ave. Yantai City,Shandong Province,China 264001';'Tel:+86 535 623-1345';'Fax:+86 535 623-4630';'Contact:\nJoey Yan';'Email:\njoey.yan@apexshipping.com.cn';'Apex Maritime (Chongqing) Co., Ltd.';'Chongqing, China\nEastern China';'29.5716184,106.531413';'Room 6, Floor 23, South Tower, Shijiyinghuang Building No. 38, North Jianxin Rd, Jiangbei District Chongqing 400020, China';'Tel:+86 23 8819 2009';'Fax:+86 23 8819 2036';'Contact:\nCindy Zeng\nLisa Xie';'Email:\ncindy.zeng@apexshipping.com.cn\nlisa.xie@apexshipping.com.cn';'Apex Maritime (Nanjing) Co., Ltd.';'Nanjing, China\nEastern China';'32.043114,118.789098';'Room D2, 18th Floor No.89 Hanzhong Road, Nanjing 210029, Jiangsu, China';'Tel:+86 25 84845871';'Fax:+86 25 84845879';'Contact:\nWinter Zhu';'Email:\nwinter.zhu@apexshipping.com.cn';'Apex Maritime (Ningbo) Co., Ltd.';'Ningbo, China\nEastern China';'29.8651695,121.5573647';'Rm 902, China Life Building No. 777 Lingqiao Road Ningbo 315010, China';'Tel:+86 574 8768 6310';'Fax:+86 574 8768 6314';'Contact:\nMr. Jason Sun';'Email:\njason.sun@apexshipping.com.cn';'Apex Maritime (Shanghai) Co., Ltd.';'Shanghai, China\nEastern China';'31.1668495,121.5430195';'RM 1211, WangJiao Plaza, 175, East Yianan Road, Shanghai 200002, China';'Tel:+86 21 6336 2020';'Fax:+86 21 53930630, 63563585, 63269809';'Contact:\nHali Huang';'Email:\nhali.huang@apexshipping.com.cn\njennifer.yu@apexshipping.com.cn';'Apex Maritime (Wuhan) Co., Ltd.';'Wuhan, China\nEastern China';'30.5952142,114.2977709';'Rm 1201, Truroll Plaza Wusheng Road Wuhan 430030, China.';'Tel:+86 27 8551 8817';'Fax:+86 27 8551 8882';'Contact:\nKatherine Lee';'Email:\nkatherine.lee@apexshipping.com.cn';'Apex Maritime (Fuzhou) Co., Ltd.';'Fuzhou, China\nSouthern China';'26.085417,119.294304';'Room A, 10\nF, Block No. 2, Hongyangxincheng Building No. 118 East Yangqiao Road Fuzhou 350001, China';'Tel:+86 591 87275810';'Fax:+86 591 87275890';'Contact:\nHelen Zhang';'Email:\nhelen.zhang@apexshipping.com.cn';'Apex Maritime (Guangzhou)';'Guangzhou, China\nSouthern China';'23.1345288,113.3079438';'Room 13B, Tower A Guangdong International Building No. 339 Huanshi Dong Road, Yuexiu District Guangzhou City, China';'Tel:+86-20-2237-8671';'Fax:+86-20-2237-8677';'Contact:\nBondy Zhang';'Email:\nbondy.zhang@apexshipping.com.cn';'Apex Maritime (HK) Co., Ltd.';'Hong Kong\nSouthern China';'22.281076,114.175695';'Room 1407-08, Harbour Centre 25 Harbour Rd. Wanchai, Hong Kong';'Tel:852-3188-9666';'Fax:852-3188-9555';'Contact:\nMartin Siu\nAndy Wong';'Email:\nmartin.siu@apexshipping.com.hk\nandy.wong@apexshipping.com.hk';'Apex Maritime (Shenzhen) Co., Ltd.';'Shenzhen, China\nSouthern China';'22.5427078,114.0710992';'Room 802, 8\nF., New China Insurance Edifice Mintian Rd., Futian District Shenzhen City, China 518026';'Tel:+86-755-8826-4001';'Fax:+86-755-8826-4014';'Contact:\nJames Zhuo\nShirley Xia';'Email:\njames.zhuo@apexshipping.com.cn\nshirley.xia@apexshipping.com.cn';'Apex Maritime (XMN) Co., Inc.';'Xiamen, China\nSouthern China';'24.462809,118.075456';'24H, International Plaza No. 8 Lujiang Rd. Xiamen 361001, China';'Tel:+86-592-261-8066';'Fax:+86-592-261-8070';'Contact:\nHelen Zhang';'Email:\nhelen.zhang@apexshipping.com.cn';'Apex Maritime (HK) Co., Ltd. (Zhongshan Branch)';'Zhongshan, China\nSouthern China';'22.501821,113.397235';'Room 07-08, 10\nF., Da Dong Yu Commerce Center Boai 5 Road, Zhongshan City, PRC';'Tel:+86 760 2 3889966\n+86 760 2 3889961';'Fax:+86 760 2 3889969';'Contact:\nAndy Shan';'Email:\nandy.shan@apexshipping.com.cn';'Apex Maritime India Pvt. Ltd.';'New Delhi\nIndia';'28.6244285,77.1349161';'CB 385 B First Floor, Ring Road Naraina, New Delhi 110028';'Tel:+91 98 11 123333';'Fax:';'Contact:\n';'Email:\ngt@apexshipping.in';'Apex Shipping B.V.';'Rotterdam, Netherlands\nEurope';'51.8637994,4.4348681';'Achterdijk 51-55 3161 EB Rhoon The Netherlands';'Tel:+31 10 8208801';'Fax:+31 10 8208802';'Contact:\nRon Reuver\nJohn Born';'Email:\nron.reuver@apexshipping.nl\njohn.born@apexshipping.nl";
  66. @Override
  67. public void onMapReady(GoogleMap googleMap) {
  68. map = googleMap;
  69. if (map != null)
  70. setUpMap();
  71. // Add a marker in Sydney, Australia, and move the camera.
  72. // LatLng sydney = new LatLng(-34, 151);
  73. // map.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
  74. // map.moveCamera(CameraUpdateFactory.newLatLng(sydney));
  75. // setUpMap();
  76. }
  77. void AddMarker() {
  78. if (map == null) {
  79. Log.d("onResume", "get map from fragment");
  80. fragment.getMapAsync(this);
  81. if (map == null)
  82. return;
  83. }
  84. try {
  85. JSONObject jsobj = new JSONObject(fragment_content);
  86. int count = jsobj.getInt("total");
  87. JSONObject objrecords = jsobj.getJSONObject("records");
  88. for (int i = 0; i < count; i++) {
  89. // offset++;
  90. JSONObject objrec = objrecords.getJSONObject("record" + i);
  91. String area = objrec.getString("area");
  92. String company = objrec.getString("company");
  93. String city = objrec.getString("city");
  94. String longitude = objrec.getString("longitude");
  95. String latitude = objrec.getString("latitude");
  96. String address = objrec.getString("address");
  97. String telephone = objrec.getString("telephone");
  98. String fax = objrec.getString("fax");
  99. String contact = objrec.getString("contact");
  100. String email = objrec.getString("email");
  101. // String markertext = company;
  102. // String city = parts[i + 1];
  103. // String postext = parts[i + 2];
  104. // String[] point = postext.split(",");
  105. // String address = parts[i + 3];
  106. // String tel = parts[i + 4];
  107. // String fax = parts[i + 5];
  108. // String contact = parts[i + 6];
  109. // String email = parts[i + 7];
  110. double dlatitude=Double.parseDouble(latitude);
  111. double dlongitude=Double
  112. .parseDouble(longitude);
  113. // String able= getResources().getConfiguration().locale.getCountry();
  114. // if (able.equals("CN")&&(area.toLowerCase().equals("southern china")||area.toLowerCase().equals("northern china")||area.toLowerCase().equals("eastern china")||area.toLowerCase().equals("taiwan")))
  115. // {
  116. // Log.d("service location", "cn 变形: ");
  117. //
  118. // double bd[] = GeoUtils.wgs84togcj02(dlongitude,dlatitude);
  119. // dlatitude = bd[0];
  120. // dlongitude = bd[0];
  121. //
  122. // }
  123. // else
  124. // {
  125. // dlatitude=Double.parseDouble(latitude);
  126. // dlongitude=Double
  127. // .parseDouble(longitude);
  128. // }
  129. LocationDetail detail = new LocationDetail(company, address,
  130. telephone, fax, contact, email);
  131. // detail.Name=markertext;
  132. // detail.Addr=address;
  133. // detail.Tel=tel;
  134. // detail.Fax=fax;
  135. // detail.Contact=contact;
  136. // detail.Email=email;
  137. marker_detail.put(company, detail);
  138. // BitmapDescriptor
  139. // bd=BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
  140. // Drawable da=getResources().getDrawable(R.drawable.ic_launcher);
  141. // Bitmap bmp=BitmapFactory.decodeResource(getResources(),
  142. // R.drawable.ic_map);
  143. // Log.d("markersize",bmp.getWidth()+","+bmp.getHeight());
  144. map.addMarker(new MarkerOptions()
  145. .icon(BitmapDescriptorFactory
  146. .fromResource(R.drawable.ic_marker))
  147. .position(
  148. new LatLng(dlatitude, dlongitude)).title(company)
  149. .snippet(city + "\n" + area));
  150. }
  151. } catch (JSONException e) {
  152. // TODO Auto-generated catch block
  153. e.printStackTrace();
  154. }
  155. }
  156. public void requestloactions() {
  157. if (m_task != null) {
  158. return;
  159. }
  160. if (fragment_content != null) {
  161. // LayoutInflater inflater = (LayoutInflater)
  162. // ApexTrackingApplication
  163. // .get_instance().getSystemService(
  164. // Context.LAYOUT_INFLATER_SERVICE);
  165. // init(fragment_content,inflater);
  166. return;
  167. }
  168. // mStatusMessageView.setText(R.string.str_Loading);
  169. // showProgress(true);
  170. m_task = new SearchTask();
  171. // TextView text_page = (TextView) view_page_footer
  172. // .findViewById(R.id.text_page);
  173. // text_page.setText("Loading...");
  174. // text_page.setEnabled(false);
  175. m_task.execute();
  176. }
  177. private LocationManager mLocationManager;
  178. @Override
  179. public void onLocationChanged(Location location) {
  180. if (location == null || map == null) {
  181. return;
  182. }
  183. // LatLng latLng = new LatLng(location.getLatitude(),location.getLongitude());
  184. // map.moveCamera(CameraUpdateFactory.newLatLng(latLng));
  185. }
  186. @Override
  187. public void onStatusChanged(String provider, int status, Bundle extras) {
  188. }
  189. @Override
  190. public void onProviderEnabled(String provider) {
  191. }
  192. @Override
  193. public void onProviderDisabled(String provider) {
  194. }
  195. class SearchTask extends AsyncTask<Void, Void, Boolean> {
  196. int errorcode;
  197. // boolean bfinish = false;
  198. @Override
  199. protected Boolean doInBackground(Void... params) {
  200. Log.d("SearchTask", "doInBackground");
  201. if (!Network.NetworkIsAvailable())
  202. {
  203. errorcode = Network.RESULT_NET_NOTAVAILABLE;
  204. return false;
  205. }
  206. String jstr = Network.get_servicelocation();
  207. if (jstr == null || jstr.length() <= 0) {
  208. // Log.d(TAG, "json is wrong");
  209. errorcode = Network.RESULT_NET_ERROR;
  210. return false;
  211. }
  212. JSONObject jsobj;
  213. //
  214. // array = new JSONArray(json);
  215. try {
  216. jsobj = new JSONObject(jstr);
  217. // if (searchresult.get_fieldscount() == 0)
  218. // {
  219. // JSONObject objfields = jsobj.getJSONObject("fields");
  220. // if (objfields != null)
  221. // searchresult.init_fields(objfields.toString());
  222. // }
  223. int count = jsobj.getInt("total");
  224. // if (count < limit)
  225. // bfinish = true;
  226. JSONObject objrecords = jsobj.getJSONObject("records");
  227. if (objrecords != null) {
  228. fragment_content = jstr;
  229. errorcode = Network.RESULT_TRUE;
  230. return true;
  231. }
  232. } catch (JSONException e) {
  233. // TODO Auto-generated catch block
  234. e.printStackTrace();
  235. }
  236. errorcode = Network.RESULT_NET_ERROR;
  237. return false;
  238. }
  239. @Override
  240. protected void onPostExecute(Boolean success) {
  241. Log.d("onPostExecute", "entry");
  242. m_task = null;
  243. // showProgress(false);
  244. switch (errorcode) {
  245. case Network.RESULT_NET_NOTAVAILABLE: {
  246. Toast toast = Toast.makeText(
  247. ApexTrackingApplication.get_instance(),
  248. getText(R.string.msg_connection_none),
  249. Toast.LENGTH_LONG);
  250. toast.setGravity(Gravity.CENTER, 0, 0);
  251. toast.show();
  252. break;
  253. }
  254. case Network.RESULT_NET_ERROR: {
  255. Toast toast = Toast.makeText(
  256. ApexTrackingApplication.get_instance(),
  257. getText(R.string.msg_net_error), Toast.LENGTH_LONG);
  258. toast.setGravity(Gravity.CENTER, 0, 0);
  259. toast.show();
  260. break;
  261. }
  262. case Network.RESULT_ERROR:
  263. // case Network.RESULT_RESPONSE_NULL:
  264. {
  265. Toast toast = Toast.makeText(
  266. ApexTrackingApplication.get_instance(),
  267. getText(R.string.msg_net_resulterror),
  268. Toast.LENGTH_LONG);
  269. toast.setGravity(Gravity.CENTER, 0, 0);
  270. toast.show();
  271. break;
  272. }
  273. default:
  274. break;
  275. }
  276. if (success) {
  277. AddMarker();
  278. }
  279. super.onPostExecute(success);
  280. }
  281. @Override
  282. protected void onCancelled() {
  283. m_task = null;
  284. // showProgress(false);
  285. }
  286. }
  287. class CustomWindowAdapter implements InfoWindowAdapter {
  288. View mContents;
  289. CustomWindowAdapter() {
  290. mContents = getActivity().getLayoutInflater().inflate(
  291. R.layout.marker_info, null);
  292. }
  293. @Override
  294. public View getInfoContents(Marker marker) {
  295. String title = marker.getTitle();
  296. TextView titleUi = ((TextView) mContents
  297. .findViewById(R.id.tv_title));
  298. if (title != null) {
  299. // Spannable string allows us to edit the formatting of the
  300. // text.
  301. // SpannableString titleText = new SpannableString(title);
  302. // titleText.setSpan(new ForegroundColorSpan(Color.RED), 0,
  303. // titleText.length(), 0);
  304. titleUi.setText(title);
  305. } else {
  306. titleUi.setText("");
  307. }
  308. String snippet = marker.getSnippet();
  309. TextView snippetUi = ((TextView) mContents
  310. .findViewById(R.id.tv_snippet));
  311. if (snippet != null && snippet.length() > 12) {
  312. // SpannableString snippetText = new SpannableString(snippet);
  313. // snippetText.setSpan(new ForegroundColorSpan(Color.MAGENTA),
  314. // 0, 10, 0);
  315. // snippetText.setSpan(new ForegroundColorSpan(Color.BLUE), 12,
  316. // snippet.length(), 0);
  317. snippetUi.setText(snippet);
  318. } else {
  319. snippetUi.setText("");
  320. }
  321. return mContents;
  322. }
  323. @Override
  324. public View getInfoWindow(Marker marker) {
  325. return null;
  326. }
  327. }
  328. // InfoWindowAdapter adpter = new ();
  329. //
  330. @Override
  331. public void onDestroy() {
  332. if (m_task != null)
  333. m_task.cancel(false);
  334. super.onDestroy();
  335. }
  336. @Override
  337. public void onDetach() {
  338. if (m_task != null)
  339. m_task.cancel(false);
  340. super.onDetach();
  341. }
  342. @Override
  343. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  344. Bundle savedInstanceState) {
  345. requestloactions();
  346. return inflater.inflate(R.layout.fragment_service_location, container,
  347. false);
  348. }
  349. @Override
  350. public void onActivityCreated(Bundle savedInstanceState) {
  351. super.onActivityCreated(savedInstanceState);
  352. FragmentManager fm = getChildFragmentManager();
  353. fragment = (SupportMapFragment) fm.findFragmentById(R.id.map);
  354. if (fragment == null) {
  355. Log.d("onActivityCreated", "create support map fragment");
  356. fragment = new SupportMapFragment();// .newInstance();
  357. fm.beginTransaction().replace(R.id.map, fragment).commit();
  358. }
  359. }
  360. @Override
  361. public void onResume() {
  362. super.onResume();
  363. if (map == null) {
  364. Log.d("onResume", "get map from fragment");
  365. fragment.getMapAsync(this);
  366. // if (map != null)
  367. // setUpMap();
  368. }
  369. }
  370. @Override
  371. public void onPause() {
  372. super.onPause();
  373. if (mLocationManager != null) {
  374. mLocationManager.removeUpdates(this);
  375. }
  376. }
  377. private void setUpMap() {
  378. Log.d("setup map", "setup map");
  379. // // Hide the zoom controls as the button panel will cover it.
  380. // map.getUiSettings().setZoomControlsEnabled(false);
  381. //
  382. // // Add lots of markers to the map.
  383. // addMarkersToMap();
  384. //
  385. // // Setting an info window adapter allows us to change the both the
  386. // contents and look of the
  387. // // info window.
  388. // map.setInfoWindowAdapter(new CustomInfoWindowAdapter());
  389. // Set listeners for marker events. See the bottom of this class for
  390. // their behavior.
  391. // AddMarker(fragment_content);
  392. // String[] parts = locations.split("';'");
  393. //
  394. // for (int i = 0; i < parts.length; i += 8)
  395. // {
  396. // String markertext = parts[i];
  397. // String city = parts[i + 1];
  398. // String postext = parts[i + 2];
  399. // String[] point = postext.split(",");
  400. // String address = parts[i + 3];
  401. // String tel = parts[i + 4];
  402. // String fax = parts[i + 5];
  403. // String contact = parts[i + 6];
  404. // String email = parts[i + 7];
  405. // LocationDetail detail = new LocationDetail(markertext, address,
  406. // tel, fax, contact, email);
  407. // // detail.Name=markertext;
  408. // // detail.Addr=address;
  409. // // detail.Tel=tel;
  410. // // detail.Fax=fax;
  411. // // detail.Contact=contact;
  412. // // detail.Email=email;
  413. // marker_detail.put(markertext, detail);
  414. // // BitmapDescriptor
  415. // // bd=BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher);
  416. // // Drawable da=getResources().getDrawable(R.drawable.ic_launcher);
  417. // // Bitmap bmp=BitmapFactory.decodeResource(getResources(),
  418. // // R.drawable.ic_map);
  419. // // Log.d("markersize",bmp.getWidth()+","+bmp.getHeight());
  420. // map.addMarker(new MarkerOptions()
  421. // .icon(BitmapDescriptorFactory
  422. // .fromResource(R.drawable.ic_marker))
  423. // .position(
  424. // new LatLng(Double.parseDouble(point[0]), Double
  425. // .parseDouble(point[1]))).title(markertext)
  426. // .snippet(city));
  427. // }
  428. map.setInfoWindowAdapter(new CustomWindowAdapter());
  429. map.moveCamera(CameraUpdateFactory.newCameraPosition(US));
  430. map.setOnMarkerClickListener(this);
  431. map.setOnInfoWindowClickListener(this);
  432. if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
  433. // TODO: Consider calling
  434. // ActivityCompat#requestPermissions
  435. // here to request the missing permissions, and then overriding
  436. // public void onRequestPermissionsResult(int requestCode, String[] permissions,
  437. // int[] grantResults)
  438. // to handle the case where the user grants the permission. See the documentation
  439. // for ActivityCompat#requestPermissions for more details.
  440. } else {
  441. map.setMyLocationEnabled(true);
  442. mLocationManager = (LocationManager)getContext().getSystemService(Context.LOCATION_SERVICE);
  443. mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,1000,10,this);
  444. }
  445. // map.setOnMarkerDragListener(this);
  446. // Pan to see all markers in view.
  447. // Cannot zoom to bounds until the map has a size.
  448. // final View mapView = getChildFragmentManager().findFragmentById(
  449. // R.id.map).getView();
  450. // if (mapView.getViewTreeObserver().isAlive())
  451. // {
  452. // mapView.getViewTreeObserver().addOnGlobalLayoutListener(
  453. // new OnGlobalLayoutListener()
  454. // {
  455. // @SuppressWarnings("deprecation")
  456. // // We use the new method when supported
  457. // @SuppressLint("NewApi")
  458. // // We check which build version we are using.
  459. // @Override
  460. // public void onGlobalLayout()
  461. // {
  462. // LatLngBounds bounds = new LatLngBounds.Builder()
  463. // .include(PERTH).include(SYDNEY)
  464. // .include(ADELAIDE).include(BRISBANE)
  465. // .include(MELBOURNE).build();
  466. // if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
  467. // {
  468. // mapView.getViewTreeObserver()
  469. // .removeGlobalOnLayoutListener(this);
  470. // }
  471. // else
  472. // {
  473. // mapView.getViewTreeObserver()
  474. // .removeOnGlobalLayoutListener(this);
  475. // }
  476. // map.moveCamera(CameraUpdateFactory.newLatLngBounds(
  477. // bounds, 50));
  478. // }
  479. // });
  480. // }
  481. }
  482. @Override
  483. public void onInfoWindowClick(Marker marker)
  484. {
  485. // Toast.makeText(getActivity(), "Click Info Window",
  486. // Toast.LENGTH_SHORT).show();
  487. Intent intent = new Intent();
  488. intent.setClass(getActivity(), LocationDetailActivity.class);
  489. String markertext = marker.getTitle();
  490. intent.putExtra("detail", marker_detail.get(markertext));
  491. // // intent.putExtra("password", password);
  492. // intent.putExtra("function_name", function_name);
  493. // intent.putExtra("behavior", Network.BEHAVIOR_SEARCH);
  494. // startActivity(intent);
  495. LocationDetail detail = marker_detail.get(markertext);
  496. if (markerClickListener != null) {
  497. markerClickListener.markerClicked(detail);
  498. }
  499. }
  500. @Override
  501. public boolean onMarkerClick(Marker arg0)
  502. {
  503. // TODO Auto-generated method stub
  504. return false;
  505. }
  506. public MarkerClickListener markerClickListener;
  507. public interface MarkerClickListener {
  508. void markerClicked(LocationDetail detail);
  509. }
  510. }