[英]How to add search place image in google map marker in android
My Concept is that, when search place in google map this place image is add in marker, marker is image view, i am use serch location code from this link http://wptrafficanalyzer.in/blog/android-geocoding-showing-user-input-location-on-google-map-android-api-v2/ and in this code use owen marker that is image view. 我的概念是,当在Google地图中搜索该位置图像时,该位置图像被添加到标记中,标记是图像视图,我正在使用此链接中的Serch位置代码http://wptrafficanalyzer.in/blog/android-geocoding-showing-user -input-location-on-google-map-android-api-v2 /,并且在此代码中使用作为图像视图的标记。 so how i can add image
所以我如何添加图像
public class GeocoderTask extends AsyncTask>{ 公共类GeocoderTask扩展了AsyncTask> {
@Override
protected List<Address> doInBackground(String... locationName) {
// Creating an instance of Geocoder class
Geocoder geocoder = new Geocoder(getBaseContext());
List<Address> addresses = null;
respo=myServiceToHttp.makeServiceCall("https://maps.googleapis.com/maps/api/place/textsearch/json?query="+addresses+"&key=Your Server KEy", MyServiceToHttp.GET);
System.out.println("MyGeocoderTask.doInBackground()------Image---->"+respo);
try {
String placeid=null;
JSONObject jsonObject=new JSONObject(respo);
JSONArray array=jsonObject.getJSONArray("results");
//System.out.println("GeocoderTask.doInBackground()---------->"+array);
for (int j = 0; j < array.length(); j++) {
JSONObject jsonObject2= array.getJSONObject(j);
placeid=jsonObject2.getString("place_id");
System.out.println("GeocoderTask.doInBackground()------PlaceID-->"+placeid);
respo2=myServiceToHttp.makeServiceCall("https://maps.googleapis.com/maps/api/place/details/json?placeid="+placeid+"&key=Your Server KEy", MyServiceToHttp.GET);
System.out.println("Response2-->>>>" +respo2);
}
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
// Getting a maximum of 3 Address that matches the input text
addresses = geocoder.getFromLocationName(locationName[0],4);
}catch (IOException e) {
e.printStackTrace();
}
return addresses;
}
@Override
protected void onPostExecute(List<Address> addresses) {
if(addresses==null || addresses.size()==0){
Toast.makeText(getBaseContext(), "No Location found", Toast.LENGTH_SHORT).show();
}
// Clears all the existing markers on the map
googleMap.clear();
// Adding Markers on Google Map for each matching address
for(int i=0;i<addresses.size();i++){
Address address = (Address) addresses.get(i);
// Creating an instance of GeoPoint, to display in Google Map
latLng = new LatLng(address.getLatitude(), address.getLongitude());
String addressText = String.format("%s, %s, %s,%s",
address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(1) : "",
address.getThoroughfare(),
// Locality is usually a city
address.getLocality(),
// The country of the address
address.getCountryName());
marker = new MarkerOptions();
marker.position(latLng);
marker.title(addressText);
//googleMap.addMarker(marker);
// Locate the first location
if(i==0)
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
}
Just try this : 试试这个:
// Uses a custom icon.
mIndia = mMap.addMarker(new MarkerOptions()
.position(SYDNEY)
.title("Sydney")
.snippet("Population: 4,627,300")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
As this just replaces the marker with an image you might want to use a Canvas to draw more complex and fancier stuff:
Bitmap.Config conf = Bitmap.Config.ARGB_8888;
Bitmap bmp = Bitmap.createBitmap(80, 80, conf);
Canvas canvas1 = new Canvas(bmp);
// paint defines the text color,
// stroke width, size
Paint color = new Paint();
color.setTextSize(35);
color.setColor(Color.BLACK);
//modify canvas
canvas1.drawBitmap(BitmapFactory.decodeResource(getResources(),
R.drawable.user_picture_image), 0,0, color);
canvas1.drawText("User Name!", 30, 40, color);
//add marker to Map
mMap.addMarker(new MarkerOptions().position(USER_POSITION)
.icon(BitmapDescriptorFactory.fromBitmap(bmp))
// Specifies the anchor to be at a particular point in the marker image.
.anchor(0.5f, 1));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.