Google Maps Query String Parameters

The following is a list of query string parameters that can be passed to Google Maps. These arguments are helpful if you want to get Google Maps to display driving directions, which are not available under the API.



Query

Translation

q=“q” stands for “query” and anything passed in this parameter is treated as if it had been typed into the query box on the maps.google.com page.
EX.

http://maps.google.com/?q=New+York
near=“near” can be used as the location part of a query instead of putting the entire string into q=. Also needed/useful for disambiguation.
EX.

http://maps.google.com/?q=shelton;near=new+york
http://maps.google.com/?q=shelton;near=seattle
g=“g” is an address or location that provides extra context for the “q” parameter. Google Maps stores the last run search here, but if it is the first search it can only contain your starting location. This is a potential information leak, so make sure you do actually mean to share the content of this parameter.
mrt=“mrt” specifies a type of search. The default is blank, which searches for everything. Other options are:
  • mrt=yp  –  Yellow pages
  • mrt=realestate — real estate listings
  • mrt=ds — Related maps
  • mrt=websearch  — local web pages (synonym for ‘yp’ ?)
  • mrt=loc — Locations search
Many uses will require the ‘q’ option and/or the ‘near’ option
EX.

http://maps.google.com/?q=phoenix&mrt=yp&near=tempe
start=“start” skips the first (start-1) matches.
num=“num” displays, at most, the given number of matches. The valid range is 0 to 20.
ll=“ll” stands for Latitude,longitude of a Google Map center – Note that the order has to be latitude first, then longitude and it has to be in decimal format.
sll=“sll” Latitude,longitude of the point from which the business search should be performed.
spn=“spn” Approximate lat/long span. The zoom level will be adjusted to fit if there’s no z= parameter.
latlng=“latlng” takes three numbers separated by commas. The first two numbers (presumably representing latitude and longitude multiplied by 1000000) are ignored. The third number seems to be a Google internal “Company ID” number for a particular business.
cid=“cid” is similar to “latlng,” but generating a different map size. It takes three numbers separated by commas. The first two numbers (presumably representing latitude and longitude multiplied by 1000000) are ignored. The third number seems to be a Google internal “Company ID” number for a particular business.
geocode=“geocode” is a concatination of “geocode” encoded values for waypoints used in directions.
radius=“radius” localizes results to a certain radius. Requires “sll” or similar center point to work.
t=“t” is Map Type. The available options are “m” map, “k” satellite, “h” hybrid, “p” terrain.
z=“z” sets the zoom level.
layer=“layer” Activates overlay. Current option is “t” traffic.
lci=“lci” activates layers of tiles and needs to be comma-separated.
view=“view” can be used to select text view (view=text) or the normal map view (view=map).
saddr=“saddr” source address. Use this when asking for driving directions.
daddr=“daddr” Destination address(es). Use this when asking for driving directions.
mrad=“mrad” gives you additional destination address.
dirflg=“dirflg” is the route type: dirflg=h Switches on “Avoid Highways” route finding mode. dirflg=t Switches on “Avoid Tolls” route finding mode. dirflg=r Switches on “Public Transit” – only works in some areas. dirflg=w Switches to walking directions – still in beta.
via=“via” gives a comma separated list of intermediate addresses for directions, that should be ‘via points’.
doflg=“doflg” Distance Units. (Defaults to prevalent units in country of origin.) doflg=ptk outputs directions in metric (km) and doflg=ptm outputs directions in imperial (miles).
cbll=“cbll” is latitude,longitude for Street View.
cbp=“cbp” Street View window that accepts 5 parameters: 1) Street View/map arrangement, 11=upper half Street View and lower half map, 12=mostly Street View with corner map 2) Rotation angle/bearing (in degrees) 3) Tilt angle, -90 (straight up) to 90 (straight down) 4) Zoom level, 0-2 5) Pitch (in degrees) -90 (straight up) to 90 (straight down), default 5
panoid=“panoid” is the panorama ID, which is the ID of the current nearby panorama object in Street View.
hl=“hl” stands for “host language”.
om=“om” stands for “overview map.” The presence of this parameter with a value other than 1 causes the overview map to be closed. If the parameter is omitted, or present with the value 1, then the overview map is open.
ie=“ie” stands for “input encoding” and can be used to specify the input character encoding set.
oe=“oe” stands for “output encoding” and can be used to specify the input character encoding set.
output=“output” is for output format (blank is default).
f=“f” stands for “form” and controls the style of query form to be displayed. f=d Displays the “directions” form (two input boxes: from, to). f=l Displays the “local” form (two input boxes: what, where). f=q (or no parameter) The default search form is displayed (single input).
pw=“pw” stands for “print window.” It activates the print mode and initiates printing. Example, pw=2.
iwloc=“iwloc” stands for “info window location” and specifies where the infowindow will be displayed. In a business search iwloc=A to iwloc=J will open the info window over the corresponding business marker, and iwloc=near will place it over the big green arrow if that’s currently displayed. iwloc=addr can be used on map search to explicitly request the info window to be open on the address, but that’s the default anyway. Directions search supports iwloc=start, iwloc=end and iwloc=pause1
iwd=1“iwd” stands for “info window display” and specifies that the infowindow displayed (iwloc=) will be a detailed (expanded) view.
iwstate1=iwstate1=ssaddfeatureinstructioncard Specifies that the infowindow is in add place mode. Use with ssp=addf and iwloc=SS.  iwstate1=sscorrectthiscard Specifies the infowindow is in edit mode. iwstate1=sscorrectthiscard:ssmovemarkercard The infowindow is in Move marker mode, with the marker bouncing and draggable. iwstate1=sscorrectthiscard:ssedithistorycard The infowindow is in View history mode, displaying a graphical list of marker moves.
msa=“msa” is involved in My Maps processing. It does nothing without the “/ms” and “/ms” does nothing without the msa=. msa=0 Used with msid= to show a particular My Map.
msa=b Activates the “My Maps” sidebar when used in conjunction with “maps.google.com/ms”.  msa=1 shows the My Maps tab directly (like msa=b did). msa=2 Jumps directly to create new My Map form.
msid=“msid” specifies a My Maps identifier. When used in conjunction with “maps.google.com/ms” and msa=0, the corresponding My Map is displayed.
vp=“vp” stands for “view point” and the presence of this parameter causes maps.google.com to switch into Copyright Service mode. Instead of returning the html that draws a map, it returns information about the copyright ownership in Javascript format. The vp= parameter specifies the viewpoint (i.e. the centre of the map). Copyright Service only works when the spn= and z= parameters are also supplied, indicating the span and the zoom. Optional parameters are t=, which specifies the map type, and key= which specifies the API key of the site performing the request.
sspn=“sspn” stands for “Screen span”. Map bounds dimensions in Degrees, to calculate this use:newGLatLng(map.getBounds().getNorthEast().lat() − map.getBounds().getSouthWest().lat(),map.getBounds().getNorthEast().lng() − map.getBounds().getSouthWest().lng()).toUrlValue()
Thanks to Google Maps Parameters Guide from MapKi for this great resource!

25 komentar:

Dengan mengirim komentar disini, Anda menyetujui bahwa komentar anda tidak mengandung Rasis ataupun konten pornografi

Android: Deserialize both XML and JSON


When I first started learning Android, I was curious in making service calls and handling the results.  Naturally, I wanted to see code snippets involving
  • parsing XML
  • deserializing JSON
To my surprise, most snippets I found only demonstrated XML parsing, with fewer demonstrating JSON deserialization.  Therefore, I decided to post these brief snippets in hopes they are useful to folks.
We’ll use a simple Employee class as an example.  If you are familiar with the term DTO, data transfer object, this Employee class represents a simple DTO.  The Java source code is as follows:
public class Employee {
    public long Id;
    public long DeptId;
    public long SalaryGradeId;
    public String FirstName;
    public String LastName;
    public String Email;
    public String Phone;
    public String Title;
    public boolean TakesLongLunches;
}

And we’ll use the following ResourceHelper class to request a list of employees:
package com.demo.helpers;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class ResourceHelper {
    public static String loadManySerialized(String url)
    {
        HttpClient httpclient = new DefaultHttpClient();

        // Prepare a request object
        HttpGet httpget = new HttpGet(url);

        // Execute the request
        HttpResponse response;

        String result = null;
        try {
            response = httpclient.execute(httpget);

            // Get hold of the response entity
            HttpEntity entity = response.getEntity();
            // If the response does not enclose an entity, there is no need
            // to worry about connection release

            if (entity != null) {
                // A Simple Response Read
                InputStream instream = entity.getContent();
                result = convertStreamToString(instream);

                // Closing the input stream will trigger connection release
                instream.close();
            }
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }

    private static String convertStreamToString(InputStream is) {
        /*
        * To convert the InputStream to String we use the BufferedReader.readLine()
        * method. We iterate until the BufferedReader return null which means
        * there's no more data to read. Each line will appended to a StringBuilder
        * and returned as String.
        */
        BufferedReader reader = new BufferedReader(new InputStreamReader(is), 8192);
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return sb.toString();
    } 
}

And here are two calls to ResourceHelper;  one requesting the response in XML format, and the other requesting the response in JSON:
String XMLSerializedResources = ResourceHelper.loadManySerialized("http://demos.brianbuikema.com/apps/soa_services/employees?format=XML"); 
String JSONSerializedResources = ResourceHelper.loadManySerialized("http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON");
Next, we’ll parse the XML list within the Employee Repository with the help of an XMLHelper class (see line 24).  The XMLHelper class, also shown below, calls the ResourceHelper class we discussed earlier.

package com.demo.domainmodel.repository;

import java.io.IOException;
import java.util.ArrayList;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import com.demo.domainmodel.Employee;
import com.demo.helpers.XmlHelper;

public class EmployeeRepository
{
    public static ArrayList<Employee> loadMany(String url)
    {
        int parserEvent = -1;
        XmlPullParser parser = null;
        ArrayList<Employee> items = new ArrayList<Employee>();
        String tag = "";
        Employee item = null;

        try {
            // calls service (referenced in url) to request XML serialized data
            parser = XmlHelper.loadData(url);
            parserEvent = parser.getEventType();

            while (parserEvent != XmlPullParser.END_DOCUMENT) {
                switch(parserEvent) {
                  case XmlPullParser.START_TAG:
                      tag = parser.getName();
                      if (tag.compareTo("Employee") == 0){
                          item = new Employee();
                      }
                  break;
                  case XmlPullParser.END_TAG:
                      tag = parser.getName();
                      if (tag.compareTo("Employee") == 0){
                          items.add(item);
                      }
                  break;
                  case XmlPullParser.TEXT:
                      String text = parser.getText();
                      if (text.trim().length() == 0) break;

                      if (tag.compareTo("Id") == 0){
                          item.Id = Integer.parseInt(text);
                      }
                      else if (tag.compareTo("DeptId") == 0){
                          item.DeptId = Integer.parseInt(text);
                      }
                      else if (tag.compareTo("SalaryGradeId") == 0){
                          item.SalaryGradeId = Integer.parseInt(text);
                      }
                      else if(tag.compareTo("FirstName") == 0){
                          item.FirstName = text;
                      }
                      else if(tag.compareTo("LastName") == 0){
                          item.LastName = text;
                      }
                      else if(tag.compareTo("Email") == 0){
                          item.Email = text;
                      }
                      else if(tag.compareTo("Phone") == 0){
                          item.Phone = text;
                      }
                      else if(tag.compareTo("Title") == 0){
                          item.Title = text;
                      }
                      else if(tag.compareTo("TakesLongLunches") == 0){
                          item.TakesLongLunches = Boolean.parseBoolean(text);
                      }

                  break;
                }

                parserEvent = parser.next();
            }
        } catch (XmlPullParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // return de-serialized list of employees
        return items;
    }
}

package com.demo.helpers;

import java.io.*;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

public class XmlHelper {
    public static XmlPullParser loadData(String url) throws XmlPullParserException, IOException
    {
        String xmlData = ResourceHelper.loadManySerialized(url);

        XmlPullParserFactory parserFactory = XmlPullParserFactory.newInstance();
        XmlPullParser parser = parserFactory.newPullParser();
        parser.setInput(new StringReader(xmlData));

        return parser;
    } 
}
To call the EmployeeRepository to obtain an actual list of Employee objects, simply use the following:
ArrayList<Employee> employees = EmployeeRepository.loadMany("http://demos.brianbuikema.com/apps/soa_services/employees?format=XML");

And finally, we’ll deserialize the JSON list.  Please pay special attention as the Employee class has been modified to do its own deserialization/serialization.  I use a static method deserializeArray(…) from within the Employee class, passing it the JSON results from the call toResourceHelper.loadManySerialized(…):
package com.hd.domainmodel;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class Employee {
    public long Id;
    public long DeptId;
    public long SalaryGradeId;
    public String FirstName;
    public String LastName;
    public String Email;
    public String Phone;
    public String Title;
    public boolean TakesLongLunches;

    public Employee() {
    }

    public Employee(JSONObject obj) throws JSONException {
        deserializeFromObj(obj);
    }

    public Employee(String serializedObj) throws JSONException {
        deserialize(serializedObj);
    }

    public void deserialize(String serializedObj) throws JSONException {
        JSONObject obj = new JSONObject(serializedObj);
        deserializeFromObj(obj);
    }

    public void deserializeFromObj(JSONObject obj) throws JSONException {
        this.Id = obj.getLong("Id");
        this.DeptId = obj.getLong("DeptId");
        this.SalaryGradeId = obj.getLong("SalaryGradeId");
        this.FirstName = obj.getString("FirstName");
        this.LastName = obj.getString("LastName");
        this.Email = obj.getString("Email");
        this.Phone = obj.getString("Phone");
        this.Title = obj.getString("Title");
        this.TakesLongLunches = Boolean.parseBoolean(obj.getString("TakesLongLunches"));
    }

    public String serialize() throws JSONException {
        return serializeToObj().toString();
    }

    public JSONObject serializeToObj() throws JSONException {
        JSONObject serializedObj = new JSONObject();
        serializedObj.put("Id", this.Id);
        serializedObj.put("DeptId", this.DeptId);
        serializedObj.put("SalaryGradeId", this.SalaryGradeId);
        serializedObj.put("FirstName", this.FirstName);
        serializedObj.put("LastName", this.LastName);
        serializedObj.put("Email", this.Email);
        serializedObj.put("Phone", this.Phone);
        serializedObj.put("Title", this.Title);
        serializedObj.put("TakesLongLunches", this.TakesLongLunches);

        return serializedObj;
    }

    public static ArrayList<Employee> deserializeArray(String serializedArray) throws JSONException {
        JSONArray jsonObjs = new JSONArray(serializedArray);
        ArrayList<Employee> employees = new ArrayList<Employee>();
        for (int i=0; i<jsonObjs.length(); i++) {
            JSONObject employee = jsonObjs.getJSONObject(i);
            employees.add(new Employee(employee));
        }

        return employees;
    } 
}
o retrieve a list of employee objects, we’ll call the Employee.deserializeArray(…), passing it the serialized String obtained by calling ResourceHelper.loadManySerialized(…).
ArrayList<Employee> employees = Employee.deserializeArray(ResourceHelper.loadManySerialized("http://demos.brianbuikema.com/apps/soa_services/employees?format=JSON"));
This article comes from Brian Buikema

 
 
 
 
 

1 komentar:

Dengan mengirim komentar disini, Anda menyetujui bahwa komentar anda tidak mengandung Rasis ataupun konten pornografi