Original: "Baidu Map API" When address resolution fails, how to call the search method to find an address
A friend asked me, what should I do when the address resolution fails? For example, he wanted to search for "Nanning".
-----------------------------------------------------------------------------
First, we need to understand the principle of address resolution :
use Geocoder for address resolution, such as "10 Street, Haidian District, Beijing", when the system matches this address, GetPoint will return a coordinate point.
The callback function is needed here.
varMygeo= NewBmap.geocoder ();//displays address resolution results on the map and adjusts the map view
Mygeo.getpoint ("Shang 10 Jie, Haidian District, Peking City", function(point) {
if(point) {
Map.centerandzoom (Point, -);
Map.addoverlay (NewBmap.marker (point));
}}, "Beijing");
When the system cannot match "10 Street, Haidian District, Beijing", it will return to the geometric center point of "Haidian District, Beijing".
If it still doesn't match, it returns the geometric center point of "Beijing".
If you just want to return to the "Beijing" coordinates, or if you want to blur the query, it is recommended that you do not use address resolution.
Instead, use the search method of the Localsearch class. For examples, see:
http://www.cnblogs.com/milkmap/archive/2010/12/22/1914106.html
When address resolution fails, you can call the Localsearch function. This method is called fuzzy query .
In the following example, for convenience, I took the first query result.
This way, when the address resolution "Nanning" failure, will automatically search this address, and on the map.
Full Source code:
<!DOCTYPE HTML PUBLIC "-//w3c//dtd HTML 4.01 transitional//en" "Http://www.w3.org/TR/html4/loose.dtd ">
<HTML>
<Head>
<title>Search when address resolution fails</title>
<Metaname= "Generator"content= "EditPlus">
<Metaname= "Author"content="">
<Metaname= "Keywords"content="">
<Metaname= "Description"content="">
<Scripttype= "Text/javascript"src= "http://api.map.baidu.com/api?v=1.2"></Script>
</Head>
<Body>
<DivID= "Divmap"style= "Width:400px;height:400px;border:solid 1px Gray"></Div>
<Scripttype= "Text/javascript">
varMap= NewBmap.map ("Divmap");
Map.centerandzoom (NewBmap.point (108.532769,22.825487), A); //Here's the definition of Nanning.
varGC= NewBmap.geocoder ();
Gc.getpoint ("Nanning Green Show District", function(PT) {
if(PT) {
Map.addoverlay (NewBmap.marker (PT)); //If the address resolution is successful, add the red marker
}Else{
varls= NewBmap.localsearch ("Nanning");
Ls.search ("Nanning Green Show District");
Ls.setsearchcompletecallback (function(RS) {
if(Ls.getstatus ()==bmap_status_success) {
varPOI=Rs.getpoi (0); //fetch the 1th result of the query
if(POI) {
varpt2=Poi.point;
Map.addoverlay (NewBmap.marker (pt2)); //if queried, add red marker
}
}Else{
Alert ("fail");
}
});
}
}, "Nanning");
</Script>
</Body>
</HTML>
"Baidu Map API" When address resolution fails, how to call the search method to find an address