WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Infoga Google Maps-karta baserad på variabel adress (https://www.wn.se/forum/showthread.php?t=1049986)

swan 2011-09-12 22:15

Infoga Google Maps-karta baserad på variabel adress
 
Jag har en variabel adress som användare matar in själva (inga koordinater). Adressen kan exempelvis se ut så här: "Sveavägen 22, Stockholm"

Söker jag på adressen i Google Maps så får jag upp en fin karta. Klickar jag på länk-ikonen så får jag upp <iframe>-kod så att jag kan infoga på min sajt. Men kollar man på koden så ser man att Google lagt till koordinater själva.

Finns det någon kod som jag kan använda för att få fram motsvarande karta, fast utan koordinater. Dvs så att det räcker om jag använder mig av min variabel.

Någon som vet?

Magnus_A 2011-09-12 22:47

Här hittar du Googles geocoding-API:
http://code.google.com/intl/sv-SE/ap...ion/geocoding/
Mer detalj för dynamisk laddning finns här:
http://code.google.com/intl/sv-SE/ap...html#Geocoding

Kristoffersen 2011-09-13 08:33

Vad bra jag skull just ställa den frågan! Men jag undrar också om det inte finns något API för .Net som är mer eller mindre halvfärdigt?

swan 2011-09-13 10:00

Citat:

Ursprungligen postat av Magnus_A (Inlägg 20417365)
Här hittar du Googles geocoding-API:
http://code.google.com/intl/sv-SE/ap...ion/geocoding/
Mer detalj för dynamisk laddning finns här:
http://code.google.com/intl/sv-SE/ap...html#Geocoding

Fast jag vill egentligen bara ha en iframe, utan att behöva använda deras API. Men det kanske inte går?

Kimpo 2011-09-18 14:40

Citat:

Ursprungligen postat av Kristoffersen (Inlägg 20417386)
Vad bra jag skull just ställa den frågan! Men jag undrar också om det inte finns något API för .Net som är mer eller mindre halvfärdigt?

Detta är en jag skrev för länge sen men borde nog fungera, jag har lämnat kvar enumsen , de används inte just i detta exempel
Kod:

public class GoogleMaps
    {
        public static GeoObject GetCoordinates(string address, string gMapKey)
        {
            WebClient client = new WebClient();
            Address = HttpUtility.UrlEncode(Address);
            GeoObject obj = new GeoObject();

            Uri uri = new Uri(String.Format("http://maps.google.com/maps/geo?q={0}&output=csv&key={1}", address, gMapKey));
            string geocodeInfo = client.DownloadString(uri);

            string[] geoValues = geocodeInfo.Split(',');

            if (geoValues.Length > 0)
            {
                obj.StatusCode = Convert.ToInt32(geoValues[0]);
                obj.Accuracy = Convert.ToInt32(geoValues[1]);
                obj.Latitude = Convert.ToDouble(geoValues[2], CultureInfo.GetCultureInfo("en-US"));
                obj.Longitude = Convert.ToDouble(geoValues[3], CultureInfo.GetCultureInfo("en-US"));
            }

            return obj;
        }


    }

public class GeoObject
{
    public enum GoogleAccuracyTypes
    {
        UNKNOWN_LOCATION = 0,
        COUNTRY_LEVEL = 1,
        REGION_LEVEL = 2,
        SUB_REGION_LEVEL = 3,
        TOWN_LEVEL = 4,
        ZIP_CODE_LEVEL = 5,
        STREET_LEVEL = 6,
        INTERSECTION_LEVEL = 7,
        ADDRESS_LEVEL = 8,
        PREMISE_LEVEL = 9
    }
    public enum GoogleStatusCodeTypes
    {
        G_GEO_SUCCESS = 200,
        G_GEO_BAD_REQUEST = 400,
        G_GEO_SERVER_ERROR = 500,
        G_GEO_MISSING_QUERY = 601,
        G_GEO_UNKNOWN_ADDRESS = 602,
        G_GEO_UNAVAILABLE_ADDRESS = 603,
        G_GEO_UNKNOWN_DIRECTIONS = 604,
        G_GEO_BAD_KEY = 610,
        G_GEO_TOO_MANY_QUERIES = 620,
    }

    public int Accuracy { get; set; }
    public int StatusCode { get; set; }
    public double Longitude { get; set; }
    public double Latitude { get; set; }
}


Magnus_A 2011-09-18 20:35

Citat:

Ursprungligen postat av swan (Inlägg 20417396)
Fast jag vill egentligen bara ha en iframe, utan att behöva använda deras API. Men det kanske inte går?

Det är så det är tänkt att användas.

Magnus_A 2011-09-18 20:36

Citat:

Ursprungligen postat av Kimpo (Inlägg 20417914)
Detta är en jag skrev för länge sen men borde nog fungera, jag har lämnat kvar enumsen , de används inte just i detta exempel
Kod:

public class GoogleMaps
    {
        public static GeoObject GetCoordinates(string address, string gMapKey)
        {
            WebClient client = new WebClient();
            Address = HttpUtility.UrlEncode(Address);
            GeoObject obj = new GeoObject();

            Uri uri = new Uri(String.Format("http://maps.google.com/maps/geo?q={0}&output=csv&key={1}", address, gMapKey));
            string geocodeInfo = client.DownloadString(uri);

            string[] geoValues = geocodeInfo.Split(',');

            if (geoValues.Length > 0)
            {
                obj.StatusCode = Convert.ToInt32(geoValues[0]);
                obj.Accuracy = Convert.ToInt32(geoValues[1]);
                obj.Latitude = Convert.ToDouble(geoValues[2], CultureInfo.GetCultureInfo("en-US"));
                obj.Longitude = Convert.ToDouble(geoValues[3], CultureInfo.GetCultureInfo("en-US"));
            }

            return obj;
        }


    }

public class GeoObject
{
    public enum GoogleAccuracyTypes
    {
        UNKNOWN_LOCATION = 0,
        COUNTRY_LEVEL = 1,
        REGION_LEVEL = 2,
        SUB_REGION_LEVEL = 3,
        TOWN_LEVEL = 4,
        ZIP_CODE_LEVEL = 5,
        STREET_LEVEL = 6,
        INTERSECTION_LEVEL = 7,
        ADDRESS_LEVEL = 8,
        PREMISE_LEVEL = 9
    }
    public enum GoogleStatusCodeTypes
    {
        G_GEO_SUCCESS = 200,
        G_GEO_BAD_REQUEST = 400,
        G_GEO_SERVER_ERROR = 500,
        G_GEO_MISSING_QUERY = 601,
        G_GEO_UNKNOWN_ADDRESS = 602,
        G_GEO_UNAVAILABLE_ADDRESS = 603,
        G_GEO_UNKNOWN_DIRECTIONS = 604,
        G_GEO_BAD_KEY = 610,
        G_GEO_TOO_MANY_QUERIES = 620,
    }

    public int Accuracy { get; set; }
    public int StatusCode { get; set; }
    public double Longitude { get; set; }
    public double Latitude { get; set; }
}


Tror att Google uppdaterat sitt API sedan dess.


Alla tider är GMT +2. Klockan är nu 23:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson