25

現在地を知りたいときに困っています。

この GM API を使用するのは初めてで、わからないことがたくさんあります。

これが私のコードです。

var geocoder = new google.maps.Geocoder();

function initialize() {
  var latLng = new google.maps.LatLng(-7.7801502, 110.3846387);
  var map = new google.maps.Map(document.getElementById('mapCanvas'), {
    zoom: 15,
    center: latLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  var marker = new google.maps.Marker({
    position: latLng,
    title: 'Ambarrukmo Plaza Yogyakarta',
    map: map,
    draggable: true
  });
}

問題は、ユーザーの現在の位置に基づいて -7.7801502 と 110.3846387 の値を自動的に変更したいということです。それをしてもいいですか?

あなたの助けと説明をありがとう。

別の質問: -> GPS が組み込まれたデバイスに基づいてこれらの値を変更するとどうなりますか?

4

4 に答える 4

36

Google マップで現在のユーザーの場所を取得することはできません。ただし、Google ローダーで Google マップを取得する場合は、 google.loader.CurrentLocationを使用して IP に基づいて場所を取得できます。

もう 1 つの方法は、HTML5 GeoLocation APIを使用することです。

function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    alert("Geolocation is not supported by this browser.");
  }
}
function showPosition(position) {
  var lat = position.coords.latitude;
  var lng = position.coords.longitude;
  map.setCenter(new google.maps.LatLng(lat, lng));
}
于 2012-12-08T20:23:56.840 に答える
9

将来的に解決策を探している人のために、Google は現在、Google マップ ページに Geolocation の例を用意しています > https://developers.google.com/maps/documentation/javascript/examples/map-geolocation

于 2015-03-13T22:20:10.217 に答える
0
import UIKit
import GoogleMaps
import GooglePlaces
import CoreLocation

class ViewController: UIViewController,CLLocationManagerDelegate,GMSMapViewDelegate {

@IBOutlet weak var currentlocationlbl: UILabel!


var mapView:GMSMapView!

var locationManager:CLLocationManager! = CLLocationManager.init()

var geoCoder:GMSGeocoder!

var marker:GMSMarker!

var initialcameraposition:GMSCameraPosition!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    self.mapView = GMSMapView()
    self.geoCoder = GMSGeocoder()
    self.marker = GMSMarker()
    self.initialcameraposition = GMSCameraPosition()

    // Create gms map view------------->
    mapView.frame = CGRect(x: 0, y: 150, width: 414, height: 667)
    mapView.delegate = self
    mapView.isMyLocationEnabled = true
    mapView.isBuildingsEnabled = false
    mapView.isTrafficEnabled = false
    self.view.addSubview(mapView)

    // create cureent location label---------->

    self.currentlocationlbl.lineBreakMode = NSLineBreakMode.byWordWrapping
    self.currentlocationlbl.numberOfLines = 3
    self.currentlocationlbl.text = "Fetching address.........!!!!!"

    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
    if locationManager.responds(to: #selector(CLLocationManager.requestAlwaysAuthorization))
    {
        self.locationManager.requestAlwaysAuthorization()
    }
    self.locationManager.startUpdatingLocation()

    if #available(iOS 9, *)
    {
    self.locationManager.allowsBackgroundLocationUpdates = true
    }
    else
    {
        //fallback earlier version
    }
    self.locationManager.startUpdatingLocation()


    self.marker.title = "Current Location"
    self.marker.map = self.mapView


    // Gps button add mapview

    let gpbtn:UIButton! = UIButton.init()
    gpbtn.frame = CGRect(x: 374, y: 500, width: 40, height: 40)
    gpbtn.addTarget(self, action: #selector(gpsAction), for: .touchUpInside)
    gpbtn.setImage(UIImage(named:"gps.jpg"), for: .normal)
    self.mapView.addSubview(gpbtn)
    }

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{
    var location123 = CLLocation()

    location123 = locations[0]

    let coordinate:CLLocationCoordinate2D! = CLLocationCoordinate2DMake(location123.coordinate.latitude, location123.coordinate.longitude)

    let camera = GMSCameraPosition.camera(withTarget: coordinate, zoom: 16.0)

    self.mapView.camera = camera
    self.initialcameraposition = camera
    self.marker.position = coordinate
    self.locationManager.stopUpdatingLocation()

}


func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition)
{
    self.currentAddres(position.target)
}

func currentAddres(_ coordinate:CLLocationCoordinate2D) -> Void
{
    geoCoder.reverseGeocodeCoordinate(coordinate) { (response, error) in

        if error == nil
        {
            if response != nil
            {

                let address:GMSAddress! = response!.firstResult()

                if address != nil
                {
                   let addressArray:NSArray! = address.lines! as NSArray

                    if addressArray.count > 1
                    {
                        var convertAddress:AnyObject! = addressArray.object(at: 0) as AnyObject!
                        let space = ","
                        let convertAddress1:AnyObject! = addressArray.object(at: 1) as AnyObject!
                        let country:AnyObject! = address.country as AnyObject!

                        convertAddress = (((convertAddress.appending(space) + (convertAddress1 as! String)) + space) + (country as! String)) as AnyObject

                        self.currentlocationlbl.text = "\(convertAddress!)".appending(".")
                    }
                    else
                    {
                        self.currentlocationlbl.text = "Fetching current location failure!!!!"
                    }

                }


            }
        }
    }
}

...

于 2017-12-11T08:04:22.450 に答える