我有两个班,一个在另一个班里。第一个类有一些工具来管理地图,在其中我已经完成了所有方法的ovverride: 的 的
的class PostAsync extends AsyncTask<String, String, JSONObject> {}
的 在这个类中,我实现了第二个类,用于从我的数据库中获取数据。 的 的
的if (!empty($contacts['feed']['entry']))
{
foreach($contacts['feed']['entry'] as $contact)
{
// retrieve user photo
if (isset($contact['link'][0]['href']))
{
$url = $contact['link'][0]['href'];
$url = $url . '&access_token=' . urlencode($accesstoken);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_VERBOSE, true);
$image = curl_exec($curl);
curl_close($curl);
}
if ($image === 'Photo not found')
{
// retrieve Name and email address
$return[] = array(
'name' => $contact['title']['$t'],
'email' => $contact['gd$email'][0]['address'],
'img_url' => '//cdn.twkcdn.com/profile/image/avatar.png?w=40&h=40&cf',
);
}
else
{
// retrieve Name and email address
$return[] = array(
'name' => $contact['title']['$t'],
'email' => $contact['gd$email'][0]['address'],
'img_url' => $url,
);
}
}
$google_contacts = $return; //returning all d
}
的
数据库返回此类中的一些坐标,我需要在Principal类的地图中添加一些标记。 问题:我无法从PostAsync类添加标记。那我该怎么办?
感谢。
答案 0 :(得分:1)
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
class PostAsync extends AsyncTask<String, String, JSONObject> {
@Override
protected void onPostExecute(JSONObject jsonObject) {
... // parse json
MarkerOptions markerOptions = new MarkerOptions();
LatLng latLng = new LatLng(20, 30);
mMap.addMarker(markerOptions
.position(latLng)
.title("Title")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)));
...
}
}
你会这样尝试吗?
答案 1 :(得分:1)
可以在主(UI)线程上添加标记,并且onPostExecute
执行主(UI)线程的AsyncTask
方法。
因此,根据您对PostAsync
班级(extends AsyncTask<String, String, JSONObject>
)的定义:
class PostAsync extends AsyncTask<String, String, JSONObject> {
// ...
protected void onPostExecute(JSONObject result) {
// Decode your JSONObject and add Markers to the map here
}
}