Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Google API返回服务器位置,而不是用户位置_Java_Google Maps_Geolocation - Fatal编程技术网

Java Google API返回服务器位置,而不是用户位置

Java Google API返回服务器位置,而不是用户位置,java,google-maps,geolocation,Java,Google Maps,Geolocation,您好,我想我是通过这段代码获取用户位置的,但我实际上获取了服务器的位置,知道如何更改它以获取用户位置吗 public void geolocate() { try { GeolocationPayloadBuilder payloadBuilder = new GeolocationPayload.GeolocationPayloadBuilder(); GeolocationPayload payload = p

您好,我想我是通过这段代码获取用户位置的,但我实际上获取了服务器的位置,知道如何更改它以获取用户位置吗

    public void geolocate() {
            try {

            GeolocationPayloadBuilder payloadBuilder = new GeolocationPayload.GeolocationPayloadBuilder();
            GeolocationPayload payload = payloadBuilder.createGeolocationPayload();
            //GeoApiContext context = new GeoApiContext.Builder().apiKey("my api key").build();
            // I guess the payload needs to be build in a different way but no clue how it should be :/
            GeolocationApiRequest req = (GeolocationApiRequest) GeolocationApi.geolocate(context, payload);

            GeolocationResult res = req.await();
            String location = res.location.toString();
            String[] latLngArray = location.split(",");
            com.google.maps.model.LatLng latLng = new com.google.maps.model.LatLng(Double.parseDouble(latLngArray[0]),
                    Double.parseDouble(latLngArray[1]));
            GeocodingApiRequest geoReq = GeocodingApi.reverseGeocode(context, latLng);
            GeocodingResult[] geoRes = geoReq.await();
            // Setting the user location for view
            System.out.println(geoRes[0].formattedAddress);
            origen.setValue(geoRes[0].formattedAddress);

        } catch (Exception e) {
            System.out.println("Exception in NetClientGet:- " + e);
        }
        }
这是我从中获取对象的依赖项:

<dependency>
            <groupId>com.google.maps</groupId>
            <artifactId>google-maps-services</artifactId>
            <version>0.9.3</version>
</dependency>
谷歌地图平台的设计并不是为了获取用户位置,我可以建议您使用HTML5地理位置,在。但请注意,谷歌不支持这一点,因为它使用的是HTML5地理位置,而不是谷歌API。如果您希望获得用户位置的地址,您可以使用HTML5地理位置返回的坐标。您可以看到下面的示例(没有地理编码功能)。这是一个工作样本-


嗯,很有趣,我会在有时间的时候测试这个,谢谢你,我试着用javascript的方式,但是我没有得到它返回到后端的纬度和经度,我用了这个,不管怎样,我会在我有时间的时候试试你贴的东西,谢谢,我读了代码,这正是我以前试过的,但是我没有设法从javascript将lat和lon连接到我的后端(java),你知道我该怎么做吗?
@POST
@Path("/geolocate")
public String geolocate() {
    try {
        CellTower newCellTower = new CellTower.CellTowerBuilder().CellId(42).LocationAreaCode(415)
                .MobileCountryCode(310).MobileNetworkCode(410).Age(0).createCellTower();
        WifiAccessPoint newWifiAccessPoint = new WifiAccessPoint.WifiAccessPointBuilder()
                .MacAddress("00:25:9c:cf:1c:ac").createWifiAccessPoint();
        WifiAccessPoint newWifiAccessPoint2 = new WifiAccessPoint.WifiAccessPointBuilder()
                .MacAddress("00:25:9c:cf:1c:ad").createWifiAccessPoint();

        GeolocationPayloadBuilder payloadBuilder = new GeolocationPayload.GeolocationPayloadBuilder()
                .HomeMobileCountryCode(310).HomeMobileNetworkCode(410).RadioType("gsm").Carrier("Vodafone")
                .ConsiderIp(false).AddCellTower(newCellTower).AddWifiAccessPoint(newWifiAccessPoint)
                .AddWifiAccessPoint(newWifiAccessPoint2);
        GeolocationPayload payload = payloadBuilder.createGeolocationPayload();
        GeoApiContext context = new GeoApiContext.Builder().apiKey("my api key")
                .build();

        GeolocationApiRequest req = (GeolocationApiRequest) GeolocationApi.geolocate(context, payload);

        GeolocationResult res = req.await();
        String location = res.location.toString();
        String[] latLngArray = location.split(",");
        com.google.maps.model.LatLng latLng = new com.google.maps.model.LatLng(Double.parseDouble(latLngArray[0]),
                Double.parseDouble(latLngArray[1]));
        GeocodingApiRequest geoReq = GeocodingApi.reverseGeocode(context, latLng);
        GeocodingResult[] geoRes = geoReq.await();
        // Setting the user location for view
        return geoRes[0].formattedAddress;

    } catch (Exception e) {
        System.out.println("Exception in NetClientGet:- " + e);
    }
    return "XD";
}
if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      var pos = {
        lat: position.coords.latitude,
        lng: position.coords.longitude
      };

      infoWindow.setPosition(pos);
      infoWindow.setContent('Location found.');
      infoWindow.open(map);
      map.setCenter(pos);
    }, function() {
      handleLocationError(true, infoWindow, map.getCenter());
    });
  } else {
    // Browser doesn't support Geolocation
    handleLocationError(false, infoWindow, map.getCenter());
  }
}